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

RegEx:从字符串的引号之间抓取值

钱选
2023-03-14

这与:正则表达式:在引号之间抓取值有关。

如果有这样的字符串

HYPERLINK "hyperlink_funda.docx" \l "Sales"

链接上给出的正则表达式

(["'])(?:(?=(\\?))\2.)*?\1

他给了我

[" HYPERLINK ", " \l ", " "]

什么正则表达式将返回包含在引号中的值(特别是在\"标记之间)?

["hyperlink_funda.docx", "Sales"]

使用Java,String。拆分(字符串正则表达式)way。

共有2个答案

东门子昂
2023-03-14

我认为您误解了字符串的性质。拆分方法。它的工作是找到一种通过匹配分隔符的特征来拆分字符串的方法,而不是通过匹配要返回的字符串的特征。

相反,您应该使用模式匹配器

String txt = " HYPERLINK \"hyperlink_funda.docx\" \\l \"Sales\" ";

String re = "\"([^\"]*)\"";

Pattern p = Pattern.compile(re);
Matcher m = p.matcher(txt);
ArrayList<String> matches = new ArrayList<String>();
while (m.find()) {
    String match = m.group(1);
    matches.add(match);
}
System.out.println(matches);
左丘源
2023-03-14

你不应该把它用在中。分裂()方法。相反,使用Pattern捕获组:

{
    Pattern pattern = Pattern.compile("([\"'])((?:(?=(\\\\?))\\3.)*?)\\1");
    Matcher matcher = pattern.matcher(" HYPERLINK \"hyperlink_funda.docx\" \\l \"Sales\" ");

    while (matcher.find())
        System.out.println(matcher.group(2));
}

输出:

基金会。docx
销售

这是一个正则表达式演示,这是一个在线代码演示。

 类似资料:
  • 我有这样一个价值观: 什么正则表达式将返回包含在引号中的值(例如和)?

  • 我正在寻找正确的regex来为我提供以下结果: null 例子: 福吧 组1:foo 组2:bar 说明:在空格上拆分 组1:foo bar 描述:用双引号包围,所以将foo和bar分组,但不要打印双引号 null null null null null 组1:foo bar 组2:堆栈溢出 组1:foo'bar 组2:堆栈溢出 组3:如何 组4:do 组5:您 组6:do

  • 问题内容: 如何获得以下两个文本中引号之间的含义? 我的问题是,如果引号被转义,则应将其忽略,但是有可能使反斜杠转义。 我想获得以下团体。 问题答案: 匹配带引号的字符串,包括其中出现的所有转义字符。 说明:

  • 问题内容: 我有以下测试(格式如下): 我正在尝试获取“测试部分:”和“我的部分”之后的文本 我用不同的RegEx模式进行了几次尝试,但结果一无所获。 如果我做: 然后,我得到正确的答复: 但是,如果我这样做 我没有结果。结果应为“我的第二 部分 ” 我也尝试过使用RegEx Multiline,但没有结果。 任何帮助,将不胜感激。 如果重要的话,我正在Python 2.7中进行编码。 如果不清楚

  • 在我的应用程序中,我可以接受如下格式的字符串: 现在我想写一个regex模式来检查这个格式,所以我写这个模式: https://regex101.com/r/oM1qO9/3 这个模式可以工作,但如果我将字符串更改为下面的示例,请再次工作,因为选择第一个引号和最后一个引号,这样字符串就与模式匹配。 https://regex101.com/r/oM1qO9/4

  • 我想使用编写Regex表达式,以找到第一个没有包裹在单引号或双引号周围的字符。 我有下面的字符串我想找到的唯一的是null后面的那个。 我不确定如何用正则表达式来表示“notbetween”。这是我试过的 但这符合我的期望。 我如何才能正确地找到没有括在引号周围的右括号? 使用C#应返回第一个匹配项。 这里更新了一些我希望能够评估的文本 (“some()test 1”,“some text)”,1