不以特定字符开头的单词前的正则表达式
Regex before word not starting with specific characters
我不想匹配特定的单词 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|şubat 2013|şub 2013|şubat 13|şub 13
etc..
这可以通过 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)?
[x+-]\s*(?:may15|may)\K|(?:may15|may)\s*[x+-]\K|(?:may15|may)
尝试 this.See 演示。
我不想匹配特定的单词 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|şubat 2013|şub 2013|şubat 13|şub 13
etc..
这可以通过 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)?
[x+-]\s*(?:may15|may)\K|(?:may15|may)\s*[x+-]\K|(?:may15|may)
尝试 this.See 演示。