1

正则表达式:

\b< low="" number="" low="">\b

示例字符串:

 <b22>Aquí se muestran algunos síntomas < low="" number="" low=""> tienen el siguiente aspecto.</b22> 

我不确定为什么找不到 síntomas<之间的单词边界。>tienen之间的另一边也存在同样的问题

关于我如何更恰当地匹配这个边界的建议?

当我给它以下输入时,正则表达式按预期匹配:

Aquí se muestran algunos síntomas< low="" number="" low="">tienen el siguiente aspecto.

删除边缘条件 \b\bPHRASE\b不是一个选项,因为它无法匹配部分单词

更新

这成功了:(感谢IgorMostyDKNickC

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

我需要改进我的边界匹配[\s\.\?\!],使这些边缘匹配正向向前和向后。

4

2 回答 2

4

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

您可以改用以下正则表达式((?: )是非捕获括号组):

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

*) 实际上,这并不适用于所有正则表达式引擎。准确地说, \b 匹配\wand \W, where\w匹配任何单词 character。正如蒂姆·皮茨克在对此答案的评论中指出的那样,“单词字符”的含义在不同的实现之间有所不同,但我不知道任何\w匹配<>.

于 2012-01-31T21:58:39.867 回答
3

我认为您正在尝试执行以下操作:

\s< low="" number="" low="">\s
于 2012-01-31T22:07:45.197 回答