gpt4 book ai didi

java - 应该过滤掉换行符的 if 语句不过滤换行符。

转载 作者:行者123 更新时间:2023-12-02 03:13:05 25 4
gpt4 key购买 nike

我正在编写一个正则表达式模式,该模式可以过滤 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).matches("^$")) {

或者检查字符串的长度:

if (m.group(2).length() == 0) {

关于java - 应该过滤掉换行符的 if 语句不过滤换行符。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40749353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com