正則マッチングは、何で始まるか、何で終わるかに合致します.

1085 ワード

java
private static String getQuestionResolution(String html){
String regex = "【 】([\\s\\S]*?)【";
Matcher matcher = Pattern.compile(regex).matcher(html);
if (matcher.find()){
return matcher.group(1).trim();
}
return "";
}
上のコードは、「解析」で始まり、「末尾」であることを示しています.そして、このタイプに該当するものを分割して、すべてこのタイプに属するものを取得します.説明:我々は、「解析」で始まるすべてのデータを取得するために、「末尾のデータ」である.[]は、含まれる任意の文字に一致し、ここでは[sS]に一致します.スペース、タブ、改ページなどを含む空白文字に一致するためです.[frtv]と同等です.Sは空白以外の文字に一致します.[^frtv]と同等です.次に、このタイプに一致するものをすべて取得します.したがって、式に基づいて、*0回または複数回前の文字またはサブ式に一致します.たとえば、zo*は「z」と「zoo」に一致します..*は{0,}に相当します.また、このような状況が発生するのではないかと心配しています.つまり、「解析」111【終了】222【解析】222【終了】333【解析】333【終了】私たちが取得するのは、最初の「解析」と3番目の「終了」の間のデータではなく111 222 333です.111【終了】222【解析】222【終了】【解析】333
この文字には2つの使い方があります.1つ目は、この文字が他の制限記号(*、+、?、{n}、{n,}、{n,}、{n,m})に続く場合、一致モードは「非貪欲」です.「非貪欲」モードは、検索された可能な限り短い文字列に一致し、デフォルトの「貪欲」パターンは、検索された可能な限り長い文字列に一致します.たとえば、文字列「oooo」では、「o+?」は単一の「o」のみに一致し、「o+」はすべての「o」に一致します.
2つ目:0回または1回で前の文字またはサブ式に一致します.たとえば、「do(es)?」は「do」または「does」の「do」に一致します.??は{0,1}に等しくなります.