java - 使用标识符拆分字符串中的单词的正则表达式模式

标签 java regex

我想使用 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/

相关文章:

java - 为什么我的 TCP 系统比 UDP 系统快?

regex - 使用Elasticsearch的邮件域的聚合计数

java - 为什么正则表达式 [^-?0-9]+ 忽略 '?' ?

regex - .htaccess:阻止访问文件并阻止目录浏览

php - 检查 url 中是否至少有 1 个大写字母的正则表达式代码是什么? (php)

java - SQLQuery.list() 返回相同的条目

java - Apache Kafka 是否提供异步订阅回调 API?

asp.net - iis url 重写中奇怪的正则表达式错误

java - 如何在 springboot 的 ConversionService 中 Autowiring

java - 多线程中的静态方法