我四处寻找了一段时间,一直找不到我要找的东西,或者我只是知道得不够,不知道我在找什么。。。
我有一种情况,我想捕捉并用括号表示,括号是一个长度在1到5个字符之间的字母字符。这并不难。接下来,我想从搜索中排除确切的字符串(AP)。
我使用的是regex101,我似乎在想要获取的字符串(或它前面的空格)上得到了匹配,但匹配只返回",而不是我想要的完整字符串(EXC)。这是我目前拥有的正则表达式:
/((?='('D{1,5}')))(?:.(?!AP))/gism
任何正确方向的建议或指示;如有必要,我将提供更多信息。
以下是您第一次使用的正则表达式和有效的正则表达式(添加空格)的比较:
/((?= '('D{1,5}') )) (?: .(?!AP ))/gism
/(( 'D{1,5} )) (?<! ( AP ))/gism
当左括号位于非以ap
开头的非数字内容周围时,第一个模式将与左括号匹配。环视与字符不匹配,请记住。(圆点是唯一没有出现在周围的字符。)
另一种模式删除文字括号:'(
和')
。它还删除了前瞻?=
,这样您就可以实际捕获一些东西。正则表达式的最后一部分是否定的。在这种情况下,它所做的就是当模式匹配的东西在ap
中结束时,阻止模式匹配p
。
然而,我无法解释为什么第二种模式有这么多不必要的括号。这相当于:
/('D{1,5})(?<!AP)/gism