用适当的正则表达式表达问题

时间:2018-10-30 12:17:11

标签: java regex

我需要在if语句中匹配类似于以下文本的文本。

REG#John Smith#14102245862#7 johns road new york#John Anthony Smith

该表达式的意思是在字符串的开头匹配一个REG关键字,然后匹配用户名,后跟一个由数字组成的帐号,对数字的数量没有特别限制,然后是地址,最后是地址注册的个人。

我想出的Regex表达式不起作用。正则表达式如下:

^REG\#\w\#[0-9]\#\w\#\w

请您帮助我告诉我哪里出了问题以及如何使它工作。 预先谢谢你

2 个答案:

答案 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]*?\#.*?\#.*,运算符*?表示重复直到下一个表达式片段,在这种情况下为\#