Regex 正则表达式:在搜索中包含特定表达式

Regex 正则表达式:在搜索中包含特定表达式,regex,Regex,我有以下字符串: CHECKING % x j1 (test1^3) @ phi=0 j2 (test2/3) @ phi=1 j3 @ phi=2 j1 (test1^3) @ phi=2 j2 (test2/3) @ phi=3 j3 @ phi=5 CHECKING % x ab (test1^3) @ phi=0 cde (test2/3) @ phi=1 fg @ phi=2 hij (test1^3) @ phi=2 kl (test2/3) @ phi=3 mn @ phi=5

我有以下字符串:

CHECKING % x j1 (test1^3) @ phi=0 j2 (test2/3) @ phi=1 j3 @ phi=2 j1 (test1^3) @ phi=2 j2 (test2/3) @ phi=3 j3 @ phi=5
CHECKING % x ab (test1^3) @ phi=0 cde (test2/3) @ phi=1 fg @ phi=2 hij (test1^3) @ phi=2 kl (test2/3) @ phi=3 mn @ phi=5
我想得到所有的
j1
j2
j3
以及
ab
cde
。。。所以括号或
@
符号前面的所有内容都是分别的,但不知怎么的,我无法让它工作。有人对正则表达式有想法吗

以下是我尝试过的:

([a-zA-Z\]+[0-9]{0,4})\s+\(.{0,9}\)\s+\@

其中:

j1 j2。。。ab cde hij kl


但是它与
j3
fg
mn
不匹配,我如何才能在出现时包含
(…)
术语?

基于您的原始模式,您可以将括号中的部分设置为可选,以捕获没有公式的情况:

([a-zA-Z_]+[0-9]{0,4})\s+(?:\(.{0,9}\))?\s*\@

另一种选择是:


这将查找后跟
\s的单词(
或者后面跟着
\s@

你想要
j_n
还是想要括号中的值?我想要
j_n
然后就用抱歉我的问题不清楚了,让我再问一次如果你想要
j
或者括号中的任何东西,如果有,就用Awesome,这正是我想要的可选的东西。所以(:Something)使某物成为可选的?括号后面的?做什么?(?:)是a。然而,关键部分是组后面的
标记,这使它成为可选的。还要注意以下空白
\s*
,它有一个星号量词(零次或多次),因此也是可选的。