我想用逗号分割下面的字符串,使用DOTALL正则表达式模式接受字母,数字,空格和特殊字符,如下划线和星号,即@input("Test_1, Test_TWO , TEST_THIRTY_3*")
,所以输出看起来像:
"Test_1",
"Test_TWO",
"TEST_THIRTY_3*"
public static void main(String args[])
{
String line = "@input(\"Test_1,Test_TWO , TEST_THIRTY_3*\"\\)\";
String pattern = "@input(\"(.*?)\".*";
Pattern r = Pattern.compile(pattern, Pattern.DOTALL);
Matcher m = r.matcher(line);
while (m.find()) {
System.out.println("Found word: " + m.group(1) );
}
答案 0 :(得分:1)
您必须在\(
之前转义@input\(\"(.*?)\".*
,这样您的正则表达式应如下\s*,\s*
,其次您可以使用String line = "@input(\"Test_1,Test_TWO , TEST_THIRTY_3*\"\\)";
String pattern = "@input\\(\"(.*?)\".*";
Pattern r = Pattern.compile(pattern, Pattern.DOTALL);
Matcher m = r.matcher(line);
while (m.find()) {
System.out.println(Arrays.toString(m.group(1).split("\\s*,\\s*")));
//----------------------------------------------------^^^^^^^^
}
将结果拆分为:
[Test_1, Test_TWO, TEST_THIRTY_3*]
输出
col_sample_rate_per_level
答案 1 :(得分:0)
如果你不必坚持使用正则表达式,你可以采用字符串方法。
Math.max(1, Runtime.getRuntime().availableProcessors() - 2)