我想使用 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) );
}
最佳答案
您必须通过 \(
转义 (
,因此您的正则表达式应如下所示 @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*]
关于java - 使用标识符拆分字符串中的单词的正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45736536/