我需要一个模式来匹配以下字符串
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+)*
但无法识别我的所有有效字符串
答案 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+)*
这应该像魅力一样!