正则表达式:
\b< low="" number="" low="">\b
示例字符串:
<b22>Aquí se muestran algunos síntomas < low="" number="" low=""> tienen el siguiente aspecto.</b22>
我不确定为什么找不到síntomas和&lt; 之间的单词边界。另一方面存在同样的问题&gt; 和 tienen
有关如何更恰当地匹配此边界的建议?
当我给它以下输入时,正则表达式按预期匹配:
Aquí se muestran algunos síntomas< low="" number="" low="">tienen el siguiente aspecto.
删除边缘条件\ b \bPHRASE\b
不是一个选项,因为它无法匹配部分单词
更新
这就是诀窍:(感谢 Igor , Mosty , DK 和 NickC )
Regex(String.Format(@"(?<=[\s\.\?\!]){0}(?=[\s\.\?\!])", innerStringToMatch);
我需要改进与[\s\.\?\!]
的边界匹配,并使这些边缘匹配为正向前观和后观。
答案 0 :(得分:4)
\b
是一个零长度匹配,可以出现在字符串中的两个字符之间,其中一个是单词字符,另一个不是单词字符。单词字符定义为[A-Za-z0-9 _] * 。 <
不是单词字符,这就是\b
不匹配的原因。
您可以尝试使用以下正则表达式((?: )
是non-capturing parentheses group):
(?:\b|\s+)< low="" number="" low="">(?:\b|\s+)
*)实际上,这对所有正则表达式引擎都不正确。准确地说,\ b匹配\w
和\W
,其中\w
匹配任何字符。正如Tim Pietzcker在对这个答案的评论中指出的那样,“单词字符”的含义在实现之间有所不同,但我不知道\w
匹配<
或>
的任何地方。 / p>
答案 1 :(得分:3)
我认为您正在尝试执行以下操作:
\s< low="" number="" low="">\s