我有一个字符串,在其中, '字符已经两个单引号。在两个单引号之间是所需的数据。

如何编写正则表达式提取"的数据我想"从下面的文本?

mydata = "some string with 'the data i want' inside";
2011-01-11 20:22:49
问题评论:

回答:

假设您希望单引号之间的部分,此正则表达式使用Matcher :

"'(.*?)'"

示例︰

String mydata = "some string with 'the data i want' inside";
Pattern pattern = Pattern.compile("'(.*?)'");
Matcher matcher = pattern.matcher(mydata);
if (matcher.find())
{
    System.out.println(matcher.group(1));
}

结果︰

the data i want

像闪电.我总是忘记非贪婪修饰:(

"if"替换为"while"时需要多个实例

记住,matcher.find() 将所需的才能运行此代码示例。未能调用此方法将导致"未找到匹配项"异常,调用 matcher.group(1) 时。

@mFontoura group(0) 将返回与外部完整的匹配项。group(1) 返回什么是中间 '' 不 ' 本身。

为什么不会标记使用问号在这种情况?不。 * 匹配 0 个或更多吗?因此两个引号之间空字符串时,它将可以尽管如此匹配?

为此,您不需要正则表达式。

添加 apache 一些 lang 到您的项目 (http://commons.apache.org/proper/commons-lang/),然后使用︰

String dataYouWant = StringUtils.substringBetween(mydata, "'");

感谢您...我是个新手,对正则表达式...因此我认为这是很容易的方式...

否,您应使用正则表达式。它是可怕的膨胀速度,将整个大依赖项添加到此简单功能的项目。了解正则表达式,您的职业生涯中会反复使用它。

您需要考虑如何将分发您的软件。如果它是一个像 webstart 一样不明智的做法是添加 Apache 一些只是为了使用这一功能。但也许不是。除了 Apache 一些具有许多其他功能。即使困难是很有必要知道正则表达式,您必须是 carefull 何时使用它。正则表达式可以很难阅读、 编写和调试。给定的某些上下文使用,这可能是更好的解决方案。

因为您还勾选了 Scala,解决方案的不方便地用来处理多个带引号的字符串的正则表达式︰

val text = "some string with 'the data i want' inside 'and even more data'"
text.split("'").zipWithIndex.filter(_._2 % 2 != 0).map(_._1)

res: Array[java.lang.String] = Array(the data i want, and even more data)

聪明。喜欢啊。

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {
    public static void main(String[] args) {
        Pattern pattern = Pattern.compile(".*'([^']*)'.*");
        String mydata = "some string with 'the data i want' inside";

        Matcher matcher = pattern.matcher(mydata);
        if(matcher.matches()) {
            System.out.println(matcher.group(1));
        }

    }
}

System.out.println(matcher.group(0))<---零开始的索引

在 javascript 中为︰

mydata.match(/'([^']+)'/)[1]

实际的 regexp 将︰/'([^']+)'/

如果您使用非贪婪修饰符 (根据另一个 post),则如下︰

mydata.match(/'(.*?)'/)[1]

它是简洁的。

内容来源于Stack Overflow How to extract a substring using regex
请输入您的翻译

How to extract a substring using regex

确认取消