代码之家  ›  专栏  ›  技术社区  ›  Pete Herc

正则表达式,允许#和+符号[重复]

  •  0
  • Pete Herc  · 技术社区  · 6 年前

    MatchCollection matches = Regex.Matches(input, @"\b[\w]*\b");
    

    我需要启用regex以允许#或+字符,因为它正试图在输入字符串中查找编程语言。因此,C++或C++被忽略了。

    我试过了

    MatchCollection matches = Regex.Matches(input, @"\b[\w+\$\#\+']*\b");
    MatchCollection matches = Regex.Matches(input, @"\b[a-zA-Z0-9@#$%&*+\-]*\b");
    
    MatchCollection matches = Regex.Matches(input, @"\b[a-zA-Z0-9\#\+]*\b");
    

    但以上这些似乎都不管用。

    有人能给我指出正确的方向吗?

    提前谢谢。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Pushpesh Kumar Rajwanshi    6 年前

    你的正则表达式很好,但你不能 \b + # 字符不是单词字符的一部分,它们的出现已经打破了单词的界限。所以边界可以有条件地应用,正确的正则表达式应该是,

    \b[\w+#]*(?:\b|(?<=[+#]))
    

    将成功匹配,

    c
    c++
    c#
    Java
    Python++
    

    但它不会匹配++c,我认为你不想匹配它,这就是为什么我没有删除它

    如果你想匹配的话 ++c 你的正则表达式就会变成,

    [\w+#]*(?:\b|(?<=[+#]))
    

    Demo