首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拆分字符串的正则表达式帮助

拆分字符串的正则表达式帮助
EN

Stack Overflow用户
提问于 2009-12-20 04:32:54
回答 6查看 327关注 0票数 1

我需要能够解析这样的字符串:

代码语言:javascript
复制
kev-+kvs+-one-+gdl+-greg-+kvs+-two-+gdl+-les-+kvs+-three

-+gdl+-kev-+kvs+-one-+gdl+-greg-+kvs+-two-+gdl+-les-+kvs+-three

kev-+kvs+-one-+gdl+-greg-+kvs+-two-+gdl+-les-+kvs+-three-+gdl+-

并在所有三种情况下识别这三个组:

代码语言:javascript
复制
kev-+kvs+-one

greg-+kvs+-two

les-+kvs+-three

换句话说,它应该使用字符串-+gdl+-来拆分字符串。

假设序列-+gdl+-不会出现,除非作为分隔符。

我该如何为此编写正则表达式呢?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-12-20 04:49:43

您可以使用正则表达式来解决此问题,只需使用-+gdl+-作为拆分模式即可。需要转义的内容取决于您的正则表达式风格。

在你的评论之后编辑:你可以在匹配的情况下进行编辑,但这会增加不必要的复杂性。它还取决于语言,如PHP中的示例

代码语言:javascript
复制
preg_match_all('/(.*?)(?:-\+gdl\+-|$)/', $string, $match);

但是你会得到空的匹配项。

票数 0
EN

Stack Overflow用户

发布于 2009-12-20 04:37:49

您不必为此编写regexp,只需使用您想要作为分隔符的字符串进行拆分,您就可以获得所需的字段。

举个例子,但我不知道你用的是什么语言

代码语言:javascript
复制
 "kev-+kvs+-one-+gdl+-greg-+kvs+-two-+gdl+-les-+kvs+-three".split("-+gdl+-")
票数 1
EN

Stack Overflow用户

发布于 2009-12-20 04:49:23

简而言之,您需要的正则表达式如下:

代码语言:javascript
复制
-\+gdl\+-

下面的Java代码可以做到这一点,打印出令牌的数量和令牌本身:

代码语言:javascript
复制
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Regex {
    public static void main(String[] args) {
        String text = "kev-+kvs+-one-+gdl+-greg-+kvs+-two-+gdl+-les-+kvs+-three";
        String regex = "-\\+gdl\\+-";
        Pattern p = Pattern.compile(regex);
        String[] tokens = p.split(text);
        System.out.println("Found " + tokens.length + " tokens");
        for (String token: tokens) {
            System.out.println("Found " + token);
        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1934051

复制
相关文章

相似问题

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