1

我正在尝试找到一个合适的正则表达式来匹配输入字符串中的一对自定义字符。这些自定义字符将替换为相应的 html 标记。

例如,输入字符串可以有成对的下划线来表示粗体字。因此, _Name_输出为<b>Name</b>

但是,如果字符串中有真正的下划线,则不能用“粗体”标签替换,必须忽略。真正的下划线必须在前面/(我找不到更好的字符,它可能是另一个下划线或连字符或其他)。正则表达式必须忽略此真正下划线的任何单个或成对出现。

到目前为止,我可以想出这个正则表达式:

var pattern = @"(?!/)_(.*?)(?!/)_";

但它在以下输入字符串中失败:

_Tom_Katy/_Richard/_/_Stephan_and many users

它输出为

<b>Tom</b>Katy/<b>Richard/_/</b>Stephan_and many users

非常感谢提前,公关

4

1 回答 1

1

试试这个

@"(?<!/)_([^/]+?)[^/]_"

这会找到任何没有/内部的字符序列,如果您想包含/在搜索中,请尝试这种方式

@"(?<!\/)_(.+?)((?<!\/)_)"

解释:

(?<!/)      # this is a negative lookbehind, it says "I don't want the previous char to be /
_           # finds the first _
([^/]+?)   # tells to search characters without / (in this case your names)
[^/]_"      # finds the last _ not preceded by / (maybe redundant seen the previous one)
于 2012-09-17T14:52:08.353 回答