【问题标题】:Java Regex .split String of CFGsJava Regex .split CFG 字符串
【发布时间】:2023-03-19 22:13:01
【问题描述】:

在解析 CFG 文件中的行字符串时遇到问题,

输入字符串是:

String str = "The <animal> loves to <activity>.";

我尝试使用带有正则表达式的拆分来按非终结符 () 进行拆分,但是它没有产生预期的结果:

我尝试过的:

str.split("(?=<)");

Output:

"The ", "<animal> loves to", "<activity>."

期望的输出:

"The ", "<animal>", " loves to ", "<activity>", "." 

【问题讨论】:

    标签: java regex split


    【解决方案1】:

    您可以使用环视进行拆分:

    String str = "The <animal> loves to <activity>.";
    String[] parts = str.split("(?=<)|(?<=>)");
    System.out.println(Arrays.toString(parts));
    

    打印出来:

    [The , <animal>,  loves to , <activity>, .]
    

    上面使用的拆分逻辑表示,当&gt; 紧随其后或&lt; 紧随其后时,在字符串中的任何点进行拆分。

    【讨论】:

    • 这是最快的方法吗?还是有更快的方法?似乎我以前使用 charAt 和 substring 解析的实现似乎更快。
    • 是的,使用基本字符串函数的解决方案可能会胜过正则表达式,但代码会更多。
    • 正则表达式很少是最快的解决方案。
    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-10
    • 2013-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多