【问题标题】:How to select all beginning character of the words if it was specific character?如果是特定字符,如何选择单词的所有开头字符?
【发布时间】:2015-10-20 09:43:18
【问题描述】:

我真正的问题是关于波斯语(从右到左方向),但为了简单起见,我首先写的是英文版:

我有这个字符串:

$str = 'it is a test, also i like this word: "italic"';

现在我想删除单词开头的所有i 字符。像这样的东西:

$newstr = 't s a test, also like this word: "italic"';

这也是我的真实版本

$str = 'امروز هوا خوب است ولی دیروز خوب نبود و ویران کننده بود';

我想要这个:(我想删除单词开头的所有و字符。要注意,正如我所说,波斯语从右边开始)

$newstr = 'امروز هوا خوب است لی دیروز خوب نبود یران کننده بود';

这是我的尝试:

echo preg_replace('/و/u', '', $str);
//=> امرز ها خب است لی دیرز خب نبد یران کننده بد

如您所见,如果و 位于单词的开头,我只需要定义它即可。我该怎么做?

注意:'/\bو/u' 不起作用,因为波斯语从右侧开始。

【问题讨论】:

  • 那么,如果从右边开始,试试'/ای\b/u'
  • @stribizhev 其实我已经测试过了,不知道为什么不行。
  • 我也认为它的工作方式和你写的一样,但我想你只是想替换它后面的可选空格:echo preg_replace('/\bو\s*/u', '', $str)
  • @Salketer 这是输出:امروز هوا خوب است ولی دیروز خوب نبود و ویران کننده بود。所以它不起作用。

标签: php regex string


【解决方案1】:

如何使用lookbehind like

/(?<=^|\s)i/

/(?<=^|\s)و/

检测i/و 前面有start of linespace。或者,如果从右到左使其反向工作(前瞻)

/i(?=$|\s)/

问候。

【讨论】: