Java - 根据空格和单引号拆分字符串但忽略两个单引号

标签 java regex

我想使用空格和单引号拆分字符串。但是应该忽略两个单引号。

输入:

name eq 'a''b'

输出应该是:

name

eq

a''b

我试过

[^\\s\"(?<!')'(?!')]+|\"[^\"]*\"|(?<!')'(?!')[^(?<!')'(?!')]*(?<!')'(?!')"

但它不起作用。

最佳答案

以下应该适合您的需要:

'(?:[^']|'')+'|[^ ]+

Regular expression visualization

Debuggex Demo


Java 示例:

String input = "foobar foo bar 'foobar' 'foo bar' 'foo''bar'";
Pattern pattern = Pattern.compile("'(?:[^']|'')+'|[^ ]+");
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
    String match = matcher.group();
    System.out.println(match);
}

Ideone Demo

关于Java - 根据空格和单引号拆分字符串但忽略两个单引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25360121/

相关文章:

java - 正则表达式:匹配 JUnit assertEquals?

MySQL将逗号分隔的字符串拆分为临时表

android - 处理剧透 BBcode Android

正则表达式获取间隔下划线之间的字符串

java - 如何以适用于 Gnome 和 KDE 的方式在 Java Swing 中启动网站

java - 无法在 ListView 中使用自定义项目布局正确显示图像

java - 使用 JSON 将字符串与今天的日期进行匹配

java - 使用相对路径加载jnlp文件

java - Java中有一个队列,当调用poll时会等待一个对象?

正则表达式允许字符串只包含数字 0 - 9 并将长度限制为 45