确保字符串具有某种模式

时间:2017-04-26 04:14:06

标签: java regex string

我正在尝试解决是否有办法检查以确保我检查的字符串遵循结构。

例如:String s = "abcd, afsfsfs, abcdef, 90> 20, abeds"

需要确认有', '后跟', '后跟', '后跟'> ',最后是', '。字母和数字在分隔它们的字符之间的长度可能不同。

我对此有点困惑。任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:1)

如果您想要任意数量的字母,特殊字符之间的数字,您可以使用此正则表达式:

public static void main(String[] args) {

            String s = "abcd, afsfsfs, abcdef, 90> 20, abeds";
            boolean matches = s.matches("\\w+, \\w+, \\w+, \\d+> \\d+, \\w+");
            System.out.println(matches);
}

答案 1 :(得分:0)

您可以将以下正则表达式模式与String#matches()结合使用:

.*, .*, .*, .*>.*, .*

代码示例:

public static void main(String args[])
{
    String s = "abcd, afsfsfs, abcdef, 90> 20, abeds";
    if (s.matches(".*, .*, .*, .*>.*, .*")) {
        System.out.println("match");
    }
    else {
        System.out.println("no match");
    }
}

在这里演示:

Rextester

答案 2 :(得分:0)

尝试类似下面的内容.FYI,尚未测试。说明,[^,]+ ..您说的是匹配,以外的任何内容,然后匹配,。第二种模式为[^>]+ >匹配任何字符>和匹配>

[]字符类或字符集

^内的

[ ]表示否定字符类。 read more

^(?![\s]*$)         [^,]+   ,    [^,]+   ,   [^,]+   ,  [^>]+  >  [^,]+    $
start  no empty      1st          2nd         3rd                  4th    end

答案 3 :(得分:0)

试试这个:

^\s*(?:\s*\w+\s*,\s*){3}\w+\s*>\s*\w+,(?!.*[,>]).*$

Regex Demo 1

它将确保格式正是您想要的格式。并且没有进一步的,或者>签到其余的字符串。但如果你的意图是允许更多的重复,>在找到格式后的字符串中,您可以从正则表达式中删除最后一个部分,即(?!.*[,>]),它变为:

^\s*(?:\s*\w+\s*,\s*){3}\w+\s*>\s*\w+,.*$

Regex Demo 2