我有一组非常具体的要求来定义我想要匹配的字符串,并且我有以下工作正则表达式:
/^#\s*([-a-zA-Z]+)(?=\s|$)/
这匹配:'#keyword' ...以及:'#Statickeyword'
对于我的最后一个条件,我想忽略一个字符串,如果它包含这个词:“静态”。我已经做了很多挖掘,但我无法弄清楚这个。以下是我最好的尝试:
/^#\s*(?!Static)([-a-zA-Z]+)(?=\s|$)/
但是,似乎我离解决方案还很远。
您需要Static
在更多的地方寻找,而不仅仅是紧随其后#
和空格:
/^#\s*(?!.*Static)([-a-zA-Z]+)(?=\s|$)/
顺便说一句,您可能想要替换(?=\s|$)
为\b
(在字母数字单词之后匹配的单词边界锚点)。如果标点符号或空格以外的其他内容分隔您要匹配的单词,那也将匹配。
你可以使用这个:
/^(?>[^S]++|S++(?!tatic\b))+$/
或者这个允许“静电”:
/^(?>[^S]++|\BS++|\bS(?!tatic\b))+$/