2014-01-12 137 views
0

有没有办法使2正则表达式产生正则表达式?正则表达式,“两个正则表达式的总和”

我的意思是,我有一个正则表达式

(\bword\b) 

(!\\(\w*)(\[.*\])*(\{(\w|\s|\\|\.|\{.\}|`|\-|\:|/|')*\bword\b(\w|\s|\\|\.|\{.\}|`|\-|\:|/|')*\})+) 

有没有一种方法来匹配第一个正则表达式加上第二正则表达式?这意味着,所有“”字里面没有“\ something {字母字母字母}}”?

+0

取决于你的正则表达式工具包,但两种常规语言的交集是一种常规语言,所以更好的可以做到这一点。 –

+0

我正在使用java。我应该将它添加到标签吗? – user1722791

+0

如何匹配第二个正则表达式*不匹配第一个正则表达式?你能想出一个不同的例子,交叉点不是微不足道的吗? – tripleee

回答

0

我不知道你的意图,并没有时间去分析你的表情,但look-ahead可能是你

(?=\bword\b)(!\\(\w*)(\[.*\])*(\{(\w|\s|\\|\.|\{.\}|`|\-|\:|/|')*\bword\b(\w|\s|\\|\.|\{.\}|`|\-|\:|/|')*\})+) 
+0

根本不起作用... – user1722791

0

捕捉所有word\something{letters letters word letters letters}之外的答案:

(\bword\b)|(?:\\(?:\w*)(?:\[.*\])*(?:\{(?:\w|\s|\\|\.|\{.\}|`|\-|\:|\/|')*\bword\b(?:\w|\s|\\|\.|\{.\}|`|\-|\:|\/|')*\})+) 

Demo @ regex101

我使用OR并结合两者的表达使第二个表达式中的每个捕获组都成为非捕获组,因此只能在构造外捕获word

+0

“|”是“还是”?因为当我在另一个正则表达式编辑器中尝试时,它会在\ something {} – user1722791

+0

'''means'或''内部和外部使用两个单词,是的。你已经在第二个正则表达式中过度使用它了。请注意,我用非捕获组('(?:)')替换了第二个expresison中的每个捕获组('()')。这样你只能在构造外部捕获“单词”,但仍然匹配我认为的全部字符串(匹配和捕获之间有区别)。 –

0

根据你的描述:所有“字”话是不是里面的“\东西{字母字母字母字母}”,我觉得应该是这么简单:

\bword\b(?!.*}) 

该解决方案假定括号{}是平衡的。

相关问题