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