Perl正则表达式不包含圆括号

时间:2014-01-23 12:42:53

标签: regex perl regex-negation

我的文字如下:

Hallo ich bin Pra Lebo, | (_S ich wurde 1974 in Südafrika geboren, S_) | (_B <marker
tag="1">denn</marker> meine Eltern, | beide Angehörige der Komtoru, | sind nach dem 
Umsturz ´73 ausgewandert. B_) | Trotz meiner auswärtigen Herkunft fühle ich mich Akritiri immer
noch sehr verbunden und ich hoffe, | dass wir heute eine gute Entscheidung treffen können. | Ich 
plädiere für ein parlamentarisches Regierungssystem, | damit die Kontrolle besser gegeben ist und 
damit so schreckliche Ereignisse sich nie wieder wiederholen können. |

我希望正则表达式匹配(_S ... S_)内的字符串,另一个正则表达式匹配(_B ...B_)内的字符串,第三个正则表达式匹配不属于上述任何内容的字符串。理想情况下,我会有三个正则表达式。怎么会这样做?

前两个问题要容易得多并且已经得到解答,但第三个问题仍然存在。我需要匹配没有任何开口或关闭圆括号包围的最大字符串。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

您可以使用正则表达式(?<=\(_S)((.|\n)*?)(?=S_\))获取(_SS_)内的字符串

<强> Demo

同样,您可以使用正则表达式(?<=\(_B)((.|\n)*?)(?=B_\))获取(_BB_)内的字符串

Demo2

要匹配这两个,您可以使用:

(?:(?<=\(_S)((?:.|\n)*?)(?=S_\)))|(?:(?<=\(_B)((?:.|\n)*?)(?=B_\)))

<强> Demo3

要匹配未括在括号中的字符串,可以使用以下内容:

(((?:^)|(?<=\)))(?:[^(])*)

<强> Demo4