字正则表达式时,尖括号是靠近边界
正则表达式的边界问题:字正则表达式时,尖括号是靠近边界
\b< low="" number="" low="">\b
例字符串:
<b22>Aquí se muestran algunos síntomas < low="" number="" low=""> tienen el siguiente aspecto.</b22>
我不知道为什么síntomas和<之间的字边界没有找到。在>和之间的另一边泰尼恩如何我可能这个边界更正确地匹配
建议存在同样的问题?
当我给它下面的输入时,正则表达式匹配预期:
Aquí se muestran algunos síntomas< low="" number="" low="">tienen el siguiente aspecto.
除去边缘条件\ b \bPHRASE\b
是不是一种选择,因为它不能匹配词语
更新
这奏效了:(感谢伊戈尔,Mosty,DK和NickC)
Regex(String.Format(@"(?<=[\s\.\?\!]){0}(?=[\s\.\?\!])", innerStringToMatch);
我需要提高我的边界匹配[\s\.\?\!]
,使这些优势正预测先行和回顾后发相匹配。
\b
是一个零长度匹配,它可以出现在字符串中的两个字符之间,其中一个是单词字符,另一个不是单词字符。字符字符定义为[A-Za-z0-9_] *。 <
不是一个单词字符,这就是为什么\b
不匹配。
你可以试试下面的正则表达式,而不是((?:)
是non-capturing parentheses group):
(?:\b|\s+)< low="" number="" low="">(?:\b|\s+)
*)其实,这并不适用于所有正则表达式引擎是正确的。确切地说,\ b在\w
和\W
之间匹配,其中\w
匹配任何字符。正如Tim Pietzcker在对此答案的评论中指出的那样,“字符字符”的含义在实现方式上有所不同,但我不知道任何地方匹配<
或>
。
正则表达式实现之间'\ w'的定义差异很大。在Python中,如果你问它,它会尊重当前的语言环境,在.NET中它完全支持Unicode,在JavaScript中,它确实只匹配ASCII alnums等等...... – 2012-01-31 22:33:52
@TimPietzcker:你是绝对正确的,但是重要的是这种特殊情况是在任何实现中'\ w'不匹配''。 – 2012-01-31 22:37:52
我想你要做到以下几点:
\s< low="" number="" low="">\s
我相信,'\ B'只会字母数字“字”工作。你可以使用像'[^ A-Za-z0-9 _]'这样的手动字符类。 – 2012-01-31 21:56:59
它看起来像 Nicole 2012-01-31 21:57:24