使用不同的空格过滤双引号或单引号之间的字符串

时间:2015-08-12 03:06:22

标签: java regex string

我有这个字符串的两个变体

 name='Anything can go here'
 name="Anything can go here"

其中name =可以有这样的空格

name=(text)
name =(text)
name = (text)

我需要在引号之间提取文本,我不确定什么是最好的方法来解决这个问题,我应该只有机制来在引号上剪掉字符串吗?你有一个我不会有很多案例的例子吗?处理,或者我应该使用正则表达式。

2 个答案:

答案 0 :(得分:0)

我不确定我是否完全理解这个问题,但我会尽力给予它:

如果您只想将变量name2分配给引号内的字符串,那么您可以轻松地执行:

String name = 'Anything can go here';
String name2= name.replace("'","");
name2 = name2.replace("\"",""); 

答案 1 :(得分:0)

您希望获得Anything can go here是否在单引号或双引号之间。通过使用以下模式,Regex具有执行此操作的功能,无论“=”之前或之后的空格如何:

"[\"'](.+)[\"']"

故障:

  • [\"'] - 由双引号或单引号组成的字符类
  • (.+) - 任何字符中的一个或多个(可能匹配也可能不匹配存储在捕获组1中的行终止符
  • [\"'] - 由双引号或单引号组成的字符类

简而言之,我们试图捕捉单引号或双引号之间的任何内容。

示例:

public static void main(String[] args) {
    List<String> data = new ArrayList(Arrays.asList(
        "name='Anything can go here'",
        "name = \"Really!  Anything can go here\""
    ));

    for (String d : data) {
        Matcher matcher = Pattern.compile("[\"'](.+)[\"']").matcher(d);
        if (matcher.find()) {
            System.out.println(matcher.group(1));
        }
    }
}

结果:

Anything can go here
Really!  Anything can go here