试图为字母数字字符串编写正则表达式,如-R51 / 53

时间:2011-03-15 21:42:14

标签: java regex

您好 我想要一个以下形式的字符串的正则表达式(Java): 从R或S开始,然后是空格,然后是数字或数字/数字或数字/数字/数字 例子: R 51/53,R 41,R 43,S 36/37/39,S 2,S 24,S 26/2

提前致谢

7 个答案:

答案 0 :(得分:2)

试试这个

^[RS]\s\d+(?:/\d+){0,2}$

说明:

^行开头

[RS]字符类匹配1或出现R或S

\s空格,这也会匹配制表符或其他空格,可以用空格替换。

\d+一个或多个数字

(?:/\d+){0,2}非捕获组(更好的性能)a /后跟1个或更多数字,发生在0到2次之间。

$行尾

答案 1 :(得分:1)

你的意思是

[RS] [0-9]+(/[0-9]+)*

答案 2 :(得分:1)

[RS] (\d+|\d+/\d+|\d+/\d+/\d+)

答案 3 :(得分:1)

所以基本的正则表达式是:

[RS] ([0-9]+)(/[0-9]+){0,2}

但它需要一些掩盖,我想:

String regex = "[RS] ([0-9]+)(/[0-9]+){0,2}";
System.out.println (param + "\t" + param.matches (regex));

我总是很困惑,因为sed,java,scala - 所有人都有不同的意见,不知道要掩饰什么。 :)

(更新:testet,修改掩蔽)

答案 4 :(得分:0)

嗯,我想到了:

'(R|S) ((\d+)/){0,2}\d+'

答案 5 :(得分:0)

我不是100%自信,但我认为:R|S' '[0-9](/[0-9])*

答案 6 :(得分:0)

你可以试试这个:(R | S)(\ d /?)+