Java Regex由字符分隔的任何数字,以数字结尾

时间:2014-12-09 00:03:57

标签: java regex

我需要一个模式来匹配以下字符串

564 A 456
10 O 94 A 465 
234 A 654 O 1 
3 A 5697 O 68998 A 89789 A 665 
2 A 5646 A 123 A 123 
231 O 645 O 4565 O 564

翻译会......

任何长度(1到*)的数字

后跟空格

跟随任何长度(1到*)

的数字

A B

例如,以下测试有效

A 465 //not begin with a number
564 AO 5645 //only A or O should appear Not both!
4564 A //not end in number
987 T 213 //invalid character T
1456 456 A 56 //invalid whitespace in first number
987 O 321654 987 //invalid whitespace in last number
12 A 456 O 132 A //not end in a number

此刻我有这种模式\d+\s((A|O)\s\d+)*

但无法识别我的所有有效字符串

2 个答案:

答案 0 :(得分:2)

所以你想接受号码(\d+ - 一个或多个数字),后面可以跟一个或多个 (A or O) number

在这种情况下,你的正则表达式看起来像\d+(\s[AO]\s\d+)+
但由于\在String中很特殊,因此需要将其文字写成{{​​1}}。

顺便说一句,你的有效字符串示例中的一些行以空格结尾,因此要么在验证之前修剪这些数据,要么在正则表达式的末尾添加"\\d+(\\s[AO]\\s\\d+)+"以包含此空格。

答案 1 :(得分:0)

您只需要在括号中包含空格,如下所示:

\d+(\s(A|O)\s\d+)*

这应该像魅力一样!