我有一个这样的字符串,用于描述结构化数据源:
Header whocares;
SampleTestPlan 2
a b
c d;
Test abc;
SampleTestPlan 3
e f
g h
i l;
Wafer 01;
EndOfFile;
每个领域...... ...以“FieldName”开头 ......以“;”结尾 ......可能包含换行符
我需要用正则表达式找到重复两次的SampleTestPlan的值。所以... 第一个值是:
2
a b
c d
第二个值是
3
e f
g h
i l
我用这样的搜索字符串进行了几次尝试:
/ SampleTestPlan( \ S) /克
/ SampleTestPlan ( \ S。); /克
/ SampleTestPlan(*); /克
但是我需要更好地理解正则表达式是如何工作的,因为我确实是他们的新手,我需要学习很多东西。
提前感谢任何可以帮助我的人!
Stefano,米兰,意大利
答案 0 :(得分:2)
您可以使用以下正则表达式:
(?<=\w\b)[^;]+(?=;)
看到它正常工作here on regex101!
工作原理:
它符合以下所有内容:
\w+
;
;
(包括newline
s)以外的任何内容(至少一个字符)。例如,对于该输入:
Header whocares;
SampleTestPlan 2
a b
c d;
Test abc;
SampleTestPlan 3
e f
g h
i l;
Wafer 01;
EndOfFile;
匹配 5 次:
whocares
然后:
2
a b
c d
然后:
abc
然后:
3
e f
g h
i l
然后:
01
答案 1 :(得分:1)
假设您的输入始终处于格式良好的样本状态,请尝试以下操作:
/SampleTestPlan(\s+\d+.*?);/sg
此处,/s
修饰符表示Dot matches newline characters
答案 2 :(得分:0)
那将是/SameTestPlan([^;]+)/g
。 [^abc]
表示任何不是a,b或c的字符。