我需要在if语句中匹配类似于以下文本的文本。
REG#John Smith#14102245862#7 johns road new york#John Anthony Smith
该表达式的意思是在字符串的开头匹配一个REG
关键字,然后匹配用户名,后跟一个由数字组成的帐号,对数字的数量没有特别限制,然后是地址,最后是地址注册的个人。
我想出的Regex表达式不起作用。正则表达式如下:
^REG\#\w\#[0-9]\#\w\#\w
请您帮助我告诉我哪里出了问题以及如何使它工作。 预先谢谢你
答案 0 :(得分:3)
问题是您不使用量词(*
或+
),并且\w
中不包含空格,它代表[A-Za-z0-9_]
。字符#
不需要转义(至少就我在Java中所知)。尝试以下Regex:
^REG#[\w ]+#\d+#[\w ]+#[\w ]+
^REG
从字面上匹配字符串(REG
)的开头#
从字面上匹配自己[\w ]+
代表至少一个单词字符或空格\d+
代表至少一位数字在Java中,请不要忘记两次转义:
String regex = "^REG#[\\w ]+#\\d+#[\\w ]+#[\\w ]+";
答案 1 :(得分:0)
尝试^REG\#.*?\#[0-9]*?\#.*?\#.*
,运算符*?
表示重复直到下一个表达式片段,在这种情况下为\#