私は、HTMLタグをフィルタリングし、練習用の有効なタグの内容のみを出力する正規表現パターンを作成しています。パターン自体は一致するタグのように見えますが、印刷する際に問題が発生しています。改行を除外する文が、改行をフィルタリングしない場合。
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class HTMLPattern{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int testCases = Integer.parseInt(in.nextLine());
while(testCases>0){
String line = in.nextLine();
String tagPattern = "<([^>]+)>([^<]*?)</\\1>";
Pattern p = Pattern.compile(tagPattern, Pattern.MULTILINE);
Matcher m = p.matcher(line);
if(m.find()){
//checks if the output equals a newline
if(m.group(2).matches("[\\n\\r]+")){
System.out.println("None");
}else{
System.out.println(m.group(2));
}
}else{
System.out.println("None");
}
testCases--;
}
}
}
入力:
3
<a>test</a>
<b></b>
<c>test</c>
を私の出力はする必要があります:
test
None
test
しかし代わりそれは次のとおりです。
test
test
私の質問は:なぜ私のif文が改行をキャッチして "None"を印刷しないのですか?新しい行はありません
:
if(m.group(2) == null)
をチェックするための私の以前の試みは失敗したものの、.isEmpty()方法は正しく私がテストしていたNULL値と一致しました。探している出力を印刷する場合は空のノード値をテストする必要があります – usha@Vimsha Hmm。以前のnull値のチェックに失敗したため、改行とみなしました。 – user2533660
@Vimsha Nvm、私はそれを理解しました。私はちょっと質問に答えます。 – user2533660