簡體   English   中英

Java Regex捕獲“”或“''之間的文本

[英]Java Regex Capture Text Between “”" or '''

我有一個要用Java Regex解析的文檔,並且該文檔的引號中出現“””或“'',因此您具有:

“”“ Bla,你不是很好!”“”或:

'''Bla,這不是一個很好的例子'''

我一直在嘗試["""|''']([\\p{Alnum}|\\p{Blank}]+)[\\"""|''']

假設:文本將以“”“或'''開頭和結尾。文本可能包括數字,字母,空格和標點符號。文本正文將不包含三個“或三個”的序列

嘗試以下模式:( ("""|''').*?\\1

鑒於:

"""Hello, World!""" some unquoted text """ lorem ipsum ''" dolor """ some more unquoted text '''single quotes'''
''' Bla, this 1 isn't a great example '''

它將匹配:

  1. """Hello, World!"""
  2. """ lorem ipsum ''" dolor """
  3. '''single quotes'''
  4. ''' Bla, this 1 isn't a great example '''

您也可能比.*?更具體.*? 但是我不確定“標點符號”是什么字符。

像這樣對我有用的東西:

        Pattern p = Pattern.compile("(\"{3}(.*?)\"{3})|('{3}(.*?)'{3})");
        String s1 = "\"\"\" Bla, you're not very nice! \"\"\"";
        String s2 = "''' Bla, this 1 isn't a great example '''";

        Matcher m1 = p.matcher(s1);
        Matcher m2 = p.matcher(s2);

        if (m1.matches())
        {
            System.out.println(m1.group(2));
        }


        if (m2.matches())
        {               
            System.out.println(m2.group(4));
        }

但是,僅使用2個正則表達式將使其更簡單。 上面的代碼產生了以下內容:

布拉,你不是很好!

Bla,這個1不是一個好例子

正則表達式的問題之一是,方括號內的任何文本均為OR'D ,這意味着Pipe字符無用(作為OR運算符)。 您將需要用圓括號替換方括號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM