首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按选项卡拆分字符串,忽略多个双引号中的选项卡

按选项卡拆分字符串,忽略多个双引号中的选项卡
EN

Stack Overflow用户
提问于 2016-07-07 19:02:30
回答 2查看 146关注 0票数 2
代码语言:javascript
复制
public static void main(String[] args) {
    String text = "hi   ravi    \"how   are you\"   when    are you coming";
    String regex = "\"([^\"]*)\"|(\\S+)";

    Matcher m = Pattern.compile(regex).matcher(text);
    while (m.find()) {
        if (m.group(1) != null) {
            System.out.println("Quoted [" + m.group(1) + "]");
        } else{
            System.out.println("Plain [" + m.group(0) + "]");
        }
    }
    // getSplits(text);
}

输出:

素喜 拉维平原 引用你的话 朴素时 平原区 朴素的你 平地来

如果给定的文本只有一个单引号,那么上面的代码可以正常工作。有谁能帮助我用下面的输入获得低于输出的结果吗?

代码语言:javascript
复制
text = "hi  ravi    \"\"how are\"   you\"   when    are you coming";

预期产出:

素喜 拉维平原 引用“how ‘s” you 朴素时 平原区 朴素的你 平地来

EN

回答 2

Stack Overflow用户

发布于 2016-07-07 20:35:42

下面的regex适用于您的示例输入/输出。您必须对预期的结果提供更详细的描述,因为这可能不是您预期的结果。

代码语言:javascript
复制
public static void main(String[] args) {
    String text = "hi  ravi    \"\"how are\"   you\"   when    are you coming";
    String regex = "(\".+\")|(\\S+)";

    Matcher m = Pattern.compile(regex).matcher(text);

    while (m.find()) {
        if (m.group(1) != null) {
            System.out.println("Quoted [" + m.group(1) + "]");
        } else{
            System.out.println("Plain [" + m.group(0) + "]");
        }
    }
    // getSplits(text);
}
票数 1
EN

Stack Overflow用户

发布于 2016-07-07 20:27:54

这样做可以:

代码语言:javascript
复制
[\t]+(?=([^"]*"[^"]*")*[^"]*$)

DEMO

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38253383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档