字正则表达式时,尖括号是靠近边界

问题描述:

正则表达式的边界问题:字正则表达式时,尖括号是靠近边界

\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是不是一种选择,因为它不能匹配词语

的零件

更新

这奏效了:(感谢伊戈尔MostyDKNickC

Regex(String.Format(@"(?<=[\s\.\?\!]){0}(?=[\s\.\?\!])", innerStringToMatch); 

我需要提高我的边界匹配[\s\.\?\!],使这些优势正预测先行和回顾后发相匹配。

+1

我相信,'\ B'只会字母数字“字”工作。你可以使用像'[^ A-Za-z0-9 _]'这样的手动字符类。 – 2012-01-31 21:56:59

+1

它看起来像 Nicole 2012-01-31 21:57:24

\b是一个零长度匹配,它可以出现在字符串中的两个字符之间,其中一个是单词字符,另一个不是单词字符。字符字符定义为[A-Za-z0-9_] *<不是一个单词字符,这就是为什么\b不匹配。

你可以试试下面的正则表达式,而不是((?:)non-capturing parentheses group):

(?:\b|\s+)< low="" number="" low="">(?:\b|\s+) 

*)其实,这并不适用于所有正则表达式引擎是正确的。确切地说,\ b在\w\W之间匹配,其中\w匹配任何字符。正如Tim Pietzcker在对此答案的评论中指出的那样,“字符字符”的含义在实现方式上有所不同,但我不知道任何地方匹配<>

+1

正则表达式实现之间'\ w'的定义差异很大。在Python中,如果你问它,它会尊重当前的语言环境,在.NET中它完全支持Unicode,在JavaScript中,它确实只匹配ASCII alnums等等...... – 2012-01-31 22:33:52

+0

@TimPietzcker:你是绝对正确的,但是重要的是这种特殊情况是在任何实现中'\ w'不匹配''。 – 2012-01-31 22:37:52

我想你要做到以下几点:

\s< low="" number="" low="">\s