0

Java Regex で解析しようとしているドキュメントがあり、その中に """ または ''' のいずれかの引用符で囲まれたテキストが表示されるので、次のようになります。

""" Bla、あなたはあまりいい人じゃない! """ or:

''' Bla、この 1 は良い例ではありません '''

私はの線に沿って試してきました["""|''']([\p{Alnum}|\p{Blank}]+)[\"""|''']

前提: テキストは、""" または ''' で開始および終了します。テキストには、数字、文字、空白、および句読点を含めることができます。テキストの本文には、3 つの "または 3' のシーケンスは含まれません。

4

2 に答える 2

0

このパターンを試してください:("""|''').*?\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 '''

おそらくより具体的にすることもできますが.*?、「句読点」が何を意味するのかわかりませんでした.

于 2012-07-10T07:50:56.780 に答える
0

私にとってはうまくいったようなもの:

        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、あなたはあまりいい人じゃない!

Bla、この1は良い例ではありません

正規表現の問題の 1 つは、角括弧内のテキストがOR'Dであることです。これは、パイプ文字が (OR演算子として) 役に立たないことを意味します。角括弧を丸括弧に置き換える必要があります。

于 2012-07-10T07:59:08.487 に答える