C#中的正则表达式模式具有空白空间

时间:2015-03-04 22:42:39

标签: c# regex

我遇到了reg ex表达式的问题,无法找到问题的答案。

我正在尝试构建一个reg ex模式,它将引入任何围绕它们的#匹配。例如#matre#或#mt#都会回来。

这适用于此。 #.*?# 但是我不希望##上的比赛显示出来。基本上如果英镑符号之间没有任何东西不匹配。

希望这是有道理的。 感谢。

3 个答案:

答案 0 :(得分:5)

请使用+匹配1个或多个符号:

#+.+#+

<强>更新: 如果您只想匹配用单个哈希符号括起来的子串,请使用:

(?<!#)#(?!#)[^#]+#(?!#)

请参阅regex demo

解释

  • (?<!#)#(?!#) - 一个#符号,前面没有#(由于负面的后瞻(?<!#)),后面没有#(由于否定前瞻(?!#)
  • [^#]+ - #以外的一个或多个符号(由于否定的字符类[^#]
  • #(?!#) - #符号未跟随另一个#符号。

答案 1 :(得分:2)

不是使用*来匹配零和无限制字符,而是将其替换为+,只有在#&#39;之间至少有一个字符时才匹配#.+?#。秒。编辑后的正则表达式应如下所示:#+.+?#+。希望这有帮助!

修改

对不正确的正则表达式,我没想到有多个哈希标志。这适用于您的句子:(?<!#)#[^#].*?#

修改2

我很确定我明白了。试试这个:{{1}}。尽管如此,它可能无法正常工作。

答案 2 :(得分:1)

尝试:

[^#]?#.+#[^#]?

[^ character_group]构造匹配字符组中未包含的任何单个字符。使用 ?之后它会让你在字符串的开头/结尾匹配(因为它匹配前面的字符或更多次。请查看文档here