从比赛中排除单词

时间:2015-04-13 09:01:39

标签: php regex

我有这个正则表达式:

[ ]\d+|(?<=[^-'(a-zA-Z0-9\n])\d+

匹配the 100,我想排除the 100匹配。

我尝试添加:(?!the 100)但没有运气!

有可能吗?

由于

修改

这就是我需要的:

the 100           => the 100
_123              => _
(1234             => (
.12345            => .
?!8               => ?!
hi 123            => hi 
?? 1234           => ?? 

(123-123)         => (123-123)
aaa123            => aaa123
A1234             => A1234
Z_L12345          => Z_L12345
..A8              => ..A8
aaa a123          => aaa a123

2 个答案:

答案 0 :(得分:2)

您可以像这样添加否定条件(?!\b100\b)

(?:[\( ](?!\b100\b)\d+|(?<=[^-'(a-zA-Z0-9\n])(?!\b100\b)\d+)$

这是demo

我在(模式中添加了[ ],以匹配1234中的(1234

答案 1 :(得分:0)

另一种可能的模式:

~[ ]?(?<![^\W_])\d+\z(?<!the 100)~

模式细节:

~            # pattern delimiter
[ ]?         # optional space (to trim it at the end)
(?<![^\W_])  # a kind of word boundary that allows the underscore
\d+\z        # digits at the end of the string
(?<!the 100) # forbids "the 100" (not preceded by "the 100")
~