首页 > 解决方案 > 正则表达式:匹配包含特殊字符的单词

问题描述

我目前正在使用 oniguruma 正则表达式来搜索类似匹配的功能,但某些关键字除外。例如,在字符串“this is a test() and im() testing() thi[s]() this_[is]_a_fun(with,some,params)”中

正则表达式应该匹配: test, im, testing, thi[s] this_[is]_a_fun 我正在使用的当前正则表达式是

\s*([A-z0-9\w_]+).?(?=\()(\b(?<!if|while|for|return|else|elif|equals|or|xor|and|not|le|gre)) 

但这thi[s]与单词中包含括号的任何函数不匹配。

我尝试更新正则表达式以将这些模式与正则表达式匹配

\s*([A-z0-9\w_|\[|\]]+).?(?=\()(\b(?<!if|while|for|return|else|elif|equals|or|xor|and|not|le|gre)) 

但无济于事。

任何匹配这些模式的帮助将不胜感激

标签: regexmatchspecial-charactersregex-negationoniguruma

解决方案


试试这个正则表达式:

([\w+\[\]]+)(?=\([\w+,]*\))

演示
详情:

  • \w+匹配任何单词字符(等于 [a-zA-Z0-9_])一次或多次
  • \[[从字面上匹配字符
  • \]]从字面上匹配字符
  • +匹配 1 次或多次
  • Positive Lookahead从字面上(?=\([\w+,]*\)) 匹配字符(和任何字符[\w+,])
  • [\w+,]*匹配任何单词字符(等于 [a-zA-Z0-9_])并且匹配,零次或多次。

推荐阅读