单引号之间的 Java 正则表达式内容

标签 java regex quotes

我正在尝试用 Java 编写一个正则表达式来查找单引号之间的内容。有人可以帮我解决这个问题吗?我尝试了以下方法,但在某些情况下不起作用:

Pattern p = Pattern.compile("'([^']*)'");
  1. 测试用例:“Tumblr”是一款了不起的应用预期输出:Tumblr

  2. 测试用例:Tumblr 是一个了不起的“应用”预期输出:应用

  3. 测试用例:Tumblr 是一款“很棒”的应用预期输出:很棒

  4. 测试用例:Tumblr 是'awesome' 和'amazing' 预期输出: awesome, amazing

  5. 测试用例:Tumblr 的用户感到失望预期输出:

  6. 测试用例:Tumblr 的“收购”已完成,但用户的忠诚度值得怀疑预期输出:收购

我很感激任何帮助。

谢谢。

最佳答案

这应该可以解决问题:

(?:^|\s)'([^']*?)'(?:$|\s)

示例:http://www.regex101.com/r/hG5eE1

Java (ideone) :

import java.util.*;
import java.lang.*;
import java.util.regex.*;

class Main {

        static final String[] testcases = new String[] {
            "'Tumblr' is an amazing app",
        "Tumblr is an amazing 'app'",
        "Tumblr is an 'amazing' app",
        "Tumblr is 'awesome' and 'amazing' ",
        "Tumblr's users' are disappointed ",
        "Tumblr's 'acquisition' complete but users' loyalty doubtful"
        };

    public static void main (String[] args) throws java.lang.Exception {
        Pattern p = Pattern.compile("(?:^|\\s)'([^']*?)'(?:$|\\s)", Pattern.MULTILINE);
        for (String arg : testcases) {
            System.out.print("Input: "+arg+" -> Matches: ");
            Matcher m = p.matcher(arg);
            if (m.find()) {
                System.out.print(m.group());
                while (m.find()) System.out.print(", "+m.group());
                System.out.println();
            } else {
                System.out.println("NONE");
            }
        } 
    }
}

关于单引号之间的 Java 正则表达式内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16746395/

相关文章:

regex - (简化的)正则表达式匹配的复杂性

Javascript REGEX 从 url 中获取 5 个字符

postgresql - JDBC 的美元报价失败

java - 当查看寻呼机的当前项目是最后一页时自动重置计时器

JavaFX Node.snapshot() 从工作线程调用时卡住线程,想法?

java - 关于 Java 中的双重输入的困惑

java - 将对象列表映射到另一个对象列表的方法

Java正则表达式分别匹配每个事件

bash - Bash中单引号和双引号之间的区别

csv - 使用 FileHelpers 处理报价