如何使用 Java 正则表达式 API 中的模式、匹配器来删除特定行



>我有一个复杂的字符串拆分,我需要删除注释空格并保留所有数字,但将所有字符串更改为字符。如果-符号位于开头,后跟数字,请将其视为负数而不是运算符

注释具有?<space>comments<space>?样式(注释是占位符)

输入:

-122+2 ? comments ?sa b
-122+2 ? blabla ?sa b

输出:

["-122","+","2","?","s","a","b"]  

(所有字符串成字符,没有空格,没有注释)

  1. 将不需要的字符串s*?s*w+s*(?=?)替换为""。您可以链接String#replaceAll以删除任何剩余的空格。请注意,?=表示积极的展望,这里意味着s*?s*w+s*后跟?。我希望您已经知道s指定空格,w指定单词字符。
  2. 然后你可以使用正则表达式,^-d+|d+|D它表示开头的负整数(即^-d+) 或数字(即d+) 或非数字 (D)。

演示:

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String str = "-122+2 ? comments ?sa b";
str = str.replaceAll("\s*\?\s*\w+\s*(?=\?)", "").replaceAll("\s+", "");
Pattern pattern = Pattern.compile("^-\d+|\d+|\D");
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
System.out.println(matcher.group());
}
}
}

输出:

-122
+
2
?
s
a
b

相关内容

  • 没有找到相关文章

最新更新