如何在Java中标记字符串时转义定界符

时间:2018-11-12 10:20:02

标签: java

我有一个像"(\\d{4},\\d{2},\\d{2} :\\d{2}:\\d{2}:\\d{2})"这样的正则表达式 我将此模式作为参数传递给一个函数,该函数基于","标记输入字符串。

示例:

func((\\d{4},\\d{2},\\d{2} :\\d{2}:\\d{2}:\\d{2}),func(n))";

如何在标记化时在正则表达式中转义逗号?

2 个答案:

答案 0 :(得分:0)

可以请您发布将字符串标记化的函数吗?这样可以对您的代码有所帮助。

在没有此类信息的情况下,您可以按以下方式使用split()(如果要执行的操作全部在“,”上拆分):

String s = "Messages,Hello\,World,Hobbies,Java\,Programming";
System.out.println(Arrays.toString(s.split("(?<!\\\\),")));

引荐-http://www.javacreed.com/how-to-split-a-string-with-escaped-delimiters/

您可以将代码替换为:

String str = "(\\d{4}\\,\\d{2}\\,\\d{2} \\d{2}:\\d{2}:\\d{2}), func(a)";
String[] tokens = str.split("(?<!\\\\),");
System.out.println(Arrays.toString(tokens));

这将为您提供一串由“,”分割的令牌的字符串

答案 1 :(得分:0)

@Derryl Thomas的答案可能是正确的答案。 这是另一种技术。

  1. 使用其他内容在正则表达式中表示逗号。
  2. 基于逗号分隔。
  3. 将“其他”更改回逗号。

例如:

  1. 代替"(\\d{4},\\d{2},\\d{2} :\\d{2}:\\d{2}:\\d{2})"
    使用"(\\d{4}boppity\\d{2}boppity\\d{2} :\\d{2}:\\d{2}:\\d{2})"
  2. 基于逗号进行拆分。
  3. 将正则表达式中的“ boppity”更改为“,”;也许像这样:
    newStringVariable = yourStringVariable.replace("boppity", ",")
相关问题