我有一个复杂的字符串分割,我需要删除comments, spaces,并保留所有numbers但改变一切string into 特点。如果-
符号在开头,后跟一个数字,将其视为负数而不是运算符
评论的风格是?<space>comments<space>?
(评论是占位符)
Input :
-122+2 ? comments ?sa b
-122+2 ? blabla ?sa b
output :
["-122","+","2","?","s","a","b"]
(所有字符串都变成字符,没有空格,没有注释)
- 替换不需要的字符串
\s*\?\s*\w+\s*(?=\?)
with ""
。你可以连锁String#replaceAll
删除任何剩余的空白。注意?=
means 积极的前瞻 https://www.regular-expressions.info/lookaround.html这意味着\s*\?\s*\w+\s*
随后是一个?
。我希望你已经知道了\s
指定空格和\w
指定单词字符。
- 然后你可以使用正则表达式,
^-\d+|\d+|\D
这意味着开头的负整数(即^-\d+
)或数字(即\d+
) 或非数字 (\D
).
Demo:
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());
}
}
}
Output:
-122
+
2
?
s
a
b
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)