【问题标题】:String pattern on ^^ [Java]^^ [Java] 上的字符串模式
【发布时间】:2016-04-04 14:28:57
【问题描述】:

这是我的代码,它适用于-,但不适用于^,我知道原因,但我不知道解决方案。

这段代码有效并给了我“这里”

String patternString = "(.*)--(.*)";

Pattern r = Pattern.compile(patternString);
Matcher m = r.matcher("here--asdfasdfasdfasdfasdfasdfasfd");

这段代码没有给我“这里”

String patternString = "(.*)^^(.*)";

Pattern r = Pattern.compile(patternString);
Matcher m = r.matcher("here^^asdfasdfasdfasdfasdfasdfasfd");

【问题讨论】:

标签: java regex


【解决方案1】:

^ 替换为\\^,这是一个特殊符号,表示行首,因为MULTILINE 修饰符未启用。此类符号 (\.[]{}()*+-?^$|) 必须在它们之前使用 \\ 进行转义。

【讨论】:

  • 其实这里^是字符串的开头,因为没有定义MUTILINE修饰符。
  • 这会生成no way 而不是here
【解决方案2】:

您需要转义两个^ 字符(或将它们分组),它们是正则表达式中的特殊字符。当我改变你的第二个例子时,

String patternString = "(.*)\\^\\^(.*)";

或喜欢

String patternString = "(.*)\\^{2}(.*)";

我收到了您的(预期的)here

【讨论】:

    猜你喜欢
    • 2019-12-29
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多