是否有正则表达式可以查找文本中的所有数字序列('d+
),但不能查找形成HTML实体的数字序列?看起来我应该同时使用"向前看"answers"向后看",但我不知道如何使用。
例如,对于字符串✑ #555 foo 777;
,我希望只匹配555
和777
,而不匹配10001
。
我试过
~(?<!(&#)|'d])'d+(?!['d|;])~
但它似乎太严格了,因为它对777;
您可能可以将此regex与查找一起使用:
(?<!&#)'b'd+'b|(?:^|'b)'d+'b(?!;|$)
演示:http://www.rubular.com/r/IUGqDf7Nfg
第二天早上我找到了解决方案。
(?<![(&#)'d])'d+|'d+(?!'d|;)
它很大,可读性很差,但它很管用。附言:我认为在处理之前解码/隐藏实体,然后把它们放回去会容易得多。