0

私は現在、文字列内のすべての正規表現を見つけることができるプログラムを持っていますが、別の部分については、正規表現に一致する部分と一致しない部分が必要です。

ですから、もし私が持っていたら、それを[ 、、 ]<h1> hello world </h1>に分割できるようにしたいと思います。<h1>hello world</h1>

誰かがこれについてどうやって行くかについて何かアイデアがありますか?

これが正規表現部分を見つけるために文字列を分割する私のコードです

ArrayList<String> foundTags = new ArrayList<String>();
Pattern p = Pattern.compile("<(.*?)>");
Matcher m = p.matcher(HTMLLine);
while(m.find()){
    foundTags.add(m.group(0));
}
4

2 に答える 2

0

String text = "testing<hi>bye</hi><b>bla bla!";
Pattern p = Pattern.compile("<(.*?)>");
Matcher m = p.matcher(text);
int last_match = 0;
List<String> splitted=new ArrayList<>();
while (m.find()) {
        splitted.add(text.substring(last_match,m.start()));
        splitted.add(m.group());
        last_match = m.end();
    }
    splitted.add(text.substring(last_match));
System.out.println(splitted.toString());

プリント[testing, <hi>, bye, </hi>, , <b>, bla bla!]

それはあなたが望むものですか?空の要素が不要な場合は、コードを簡単に修正して空の要素を省略することができます。

while (m.find()) {
    if(last_match != m.start())
        splitted.add(text.substring(last_match,m.start()));
    splitted.add(m.group());
    last_match = m.end();
}
if(last_match != text.length())
    splitted.add(text.substring(last_match));

コメントで指摘されているように、覚えておいてください。正規表現を使用して任意のHTML / XMLを解析することは、一般的に悪い考えです。

于 2013-03-26T02:26:54.517 に答える
0

正規表現のグループ化機能を使用して、一致のさまざまな部分を取得できます。例えば:

ArrayList<String> list = new ArrayList<String>();
Pattern p = Pattern.compile("(<.*?>)(.*)(<.*?>)");
Matcher m = p.matcher("<h1> Hello World </h1>");
while(m.find()){
    list.add(m.group(1));
    list.add(m.group(2));
    list.add(m.group(3));
}

あなたが望むリストをあなたに与えるでしょう:["<h1>", " Hello World ", "</h1>"]。グループ番号0は完全に一致する式であることに注意してください。

于 2013-03-26T02:35:43.580 に答える