我有这个正则表达式,用于捕获TextMate(与代码)语法中的一些标准lib调用:
(?i)\b(sin|cos|tan)\b
现在,在像str$(5)
这样的通话中,我想捕获str$
。你不能做:
(?i)\b(sin|cos|tan|str\$)\b
因为结尾的单词边界(我想?)
我尝试了
(?i)\b(sin|cos|tan|str\$)( |\()
但这会导致:
您能捕获一个在结尾处和单词边界两侧带有特殊字符的单词(而不必“捕获”边界上的实际字符)吗?
答案 0 :(得分:1)
您可以使用
(?i)\b(sin|cos|tan|str\$)(?!\w)
^^^^^^
或
(?i)(?<!\w)(sin|cos|tan|str\$)(?!\w)
^^^^^^^ ^^^^^
(?!\w)
是一个否定的超前查询,如果当前位置右侧紧邻字母,数字或下划线,则匹配失败。
(?<!\w)
是一个向后看的负数,如果当前位置左侧紧邻字母,数字或下划线,则匹配失败。