正则表达式匹配模式,同时排除文本中的其他模式

时间:2015-01-22 06:34:20

标签: regex matching

我有一个文件,其中包含

等文字
lets say my input text is || text || || text || || text || || 1 || || 2 || 

我想只匹配||从文本同时我想排除数字出现的数字与这种模式|| 0-9 ||

所以我做了一个正则表达式

(\ ||):这将匹配||在文中但我的问题是我也得到了|| 0-9 ||这是可以理解的,所以我在正则表达式中再添加一个过滤器

(\||) ([0-9+]):这将匹配text|| 1 || text|| 3 ||

等所有文字

最后,我想忽略这个与

匹配的模式
(\||) ([0-9+])

并仅按(\||)获得结果,因此输出

|| \ n text || \ n || \ n text || \ n || \ n text || \ n || 1 || || 2 ||

那么如何忽略/丢弃正则表达式匹配的模式

选项1 :(?:表达式)(它不起作用)

(\ ||)(\ || [0-9 +] .... //我不想在匹配第一组时影响这种模式)

提前致谢:)

2 个答案:

答案 0 :(得分:0)

  

最后,我想忽略这个与

匹配的模式      

(\||) ([0-9+])

\|\|\s*\d+\s*(*SKIP)(*F)|\|\|

DEMO

我以为你正在运行php。

OR

\|\|(?!\s*\d+)

DEMO

答案 1 :(得分:0)

假设有效术语也可能包含数字(和字母),则需要一个与常规模式匹配的正则表达式,但排除只有任何数字术语。

使用负面展望:

^(?!.*\|\| \d+ \|\|)(\|\| \w+ \|\| ?)+$

请参阅demo