当前位置: 首页 > 知识库问答 >
问题:

Java-Regex拆分字符串,但Regex match在同一个字符串上返回false

公羊绪
2023-03-14

问题:我可以在给定的正则表达式上拆分字符串,但相同的正则表达式在匹配具有相同正则表达式的方法时失败。

问题:如何使用用于拆分同一字符串的同一正则表达式在matches方法上返回true?

String myString = "(attribute==\"value\";attribute2==\"value2\")";
String myRegex = "[,;](?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)";

if (myString.matches(myRegex)) { //returns false 
   myString.split(myRegex); // never reached but splits string correctly.
}

查看操作中的正则表达式

共有1个答案

郤仰岳
2023-03-14

。matches(),顾名思义,它回答了一个问题:整个字符串是否与这个regexp匹配。

大概你想要的是。。这就是:在这个字符串中找到与这个regexp匹配的下一个子字符串。可以多次调用find()——每次调用都会找到“下一个”匹配的子字符串,直到没有更多子字符串为止。

请注意,您需要重写为标准表单:

// This can and probably should be a static final constant field.
Pattern p = Pattern.compile("your regexp goes here");

void foo() {
  Matcher m = p.matcher("input (string) here");
  while (m.find()) {
    // do stuff.. you can call stuff like ...
    String firstSubmatch = m.group(1);
  }
}

 类似资料:
  • 问题内容: 我想将字符串拆分为单个字符。所以我做: 但这产生了: 在其他语言(例如Ruby)中执行相同操作时,我不习惯使用第一个空字符串。它背后的逻辑是什么? 问题答案: 你为什么要用这个?使用可能会更好。 我知道一个会返回一个字符串数组,而另一个会给您一个字符数组。由于您希望分别使用每个字符,因此我假设这与您的代码无关。

  • eCaused by:org.apache.camel.InvalidPayloadException:没有类型为:org.apache.camel.Exchange的可用正文,但其值为:11484类型为:java.lang.String on:message:11484。原因:没有类型转换器可用于将类型:java.lang.String转换为所需的类型:org.apache.camel.exch

  • 如何将过滤器列表拆分为单个过滤器元件?split2String在线程“main”java.util.regex中导致:异常。PatternSyntaxException:索引10或(|和)附近的未闭合组(

  • 问题 你想拆分一个字符串。 解决方案 使用 JavaScript 字符串的 split() 方法: "foo bar baz".split " " # => [ 'foo', 'bar', 'baz' ] 讨论 String 的这个 split() 方法是标准的 JavaScript 方法。可以用来基于任何分隔符——包括正则表达式来拆分字符串。这个方法还可以接受第二个参数,用于指定返回的子字符串数

  • 问题内容: 我想用’=’字符分割字符串。但是我只希望它在一开始就分裂。我怎样才能做到这一点 ?这是’_’char的JavaScript示例,但对我来说不起作用, 仅在指定字符的第一个实例上才拆分字符串 范例: 当我尝试String.split(’=’); 它给 但是我需要 谢谢 问题答案: string.split(“=”, 2); 如解释: 此方法返回的数组包含此字符串的每个子字符串,该子字符串

  • 我想用'='charecter分割一个字符串。但是我希望它只在第一个实例上分割。我该怎么做?这是一个'_'char的JavaScript示例,但是它不适用于我只在指定字符的第一个实例上分割字符串 例子: 当我尝试使用字符串时。拆分(“=”);它给 但我需要 谢谢