【问题标题】:Perl regex not containing round bracketsPerl 正则表达式不包含圆括号
【发布时间】:2014-01-23 12:42:52
【问题描述】:

我有如下文字:

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_) 中的字符串,第三个正则表达式来匹配不在上述任何范围内的那些跨度。理想情况下,我会有三个正则表达式。怎么做呢?

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

【问题讨论】:

    标签: regex perl regex-negation


    【解决方案1】:

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

    Demo

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

    Demo2

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

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

    Demo3

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

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

    Demo4

    【讨论】:

    • 谢谢,稍后再试。你对如何做第三个正则表达式有什么建议吗?匹配不在括号内的任何内容?对于我上面的示例,最后一个正则表达式应该返回两个匹配项:匹配 1:Hallo ich bin Pra Lebo, 匹配 2:| 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.
    • 好的,我会检查并回复你。
    • 好的,前两个正则表达式就像一个魅力。再次感谢。但是, split 方法会返回许多不正确的匹配项。澄清一下:我想匹配最长可能的非(包含字符串。
    • @user1826452 检查演示3。
    • 嗨 Sujith - 我已经检查了 demo3,谢谢。它适合匹配括号内的东西。我还想要第三个正则表达式来匹配括号中未包含的内容 - 请参阅我上面的评论。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-26
    • 2013-06-17
    • 2012-10-18
    • 1970-01-01
    相关资源
    最近更新 更多