我不想匹配特定字词may|may15
,不是从特定字符x|-|+
开始
TRADED; Mar15 x May15,5 MW Base 121,50 TL
示例:
x May15 > WRONG
- May15 > WRONG
+ May15 > WRONG
xMay15 > WRONG
-May15 > WRONG
+May15 > WRONG
May15 > TRUE
May15, > TRUE
May15 + > FALSE
May15 x > FALSE
etc...
我试过以下但匹配:
(?<!-)\b(?![x|\-|\+]\s?)(may|may15)(?!\s[x|\-|\+])\b(?!-)(\s|\,)
演示: https://regex101.com/r/eV3kW3/1
字符是静态的:+
-
和+
但言语是动态的,这些都是几个月:
jan | jan13 | jan-13 | ocak 2013 | oca 2013 | ocak 13 | oca 13
feb | feb13 | feb-13 |şubat2013|şub2013|şubat13|şub13
等。
答案 0 :(得分:2)
这可以通过PCRE动词(*SKIP)(*F)
[-x+]\h*may(?:15)?(*SKIP)(*F)|may(?:15)?
首先,[-x+]\h*may(?:15)?
会匹配您要排除的所有may
字符串。然后,以下(*SKIP)(*F)
部分使匹配失败。现在,正则表达式引擎使用|
运算符旁边的模式来匹配字符串剩余部分中的字符。 \h*
匹配零个或多个水平空白字符。
<强>更新强>
(?:[-x+]\h*may(?:15)?|may(?:15)?\h*[-x+])(*SKIP)(*F)|may(?:15)?
答案 1 :(得分:1)
[x+-]\s*(?:may15|may)\K|(?:may15|may)\s*[x+-]\K|(?:may15|may)
试试这个。看看演示。