2

我正在尝试匹配来自 html 的字符。有三种类型的and:

and, &, &

我正在使用以下代码:

(&|&|\band\b)

上面代码的问题是:它也匹配以 & 开头的单词

i.e. © €

我也尝试了以下方法,但它与文本中行首和行尾的 & 字符不匹配。

(\s&\s|&|\band\b)
4

3 回答 3

4

怎么样

(&)|&(?!\w)|\band\b

比赛and, &,&

不匹配© €

中间的匹配一个不带单词字符 ( [A-Za-z0-9_])的 & 号

于 2012-08-01T21:48:46.200 回答
1
(&|&|\band\b)

是一个好的开始。继续减少结果集,当匹配时,您将不得不指定详细信息。没有神奇的分隔符可以告诉正则表达式你想要什么。所以问题是:你怎么能从那些你不想接受的人中分辨出你想接受的'& '

如果不开始一个单词,也许你想接受所有的'&' ?所以:

(&[^a-zA-Z]|&|\band\b)
于 2012-08-01T21:47:52.817 回答
0

试试这个正则表达式:

$regex = '/\b((\&(amp;)?)|(and))\b/i';
于 2012-08-01T22:04:39.653 回答