我有一个模式为[0-9]*
的字段的表达式,它带有一个数值,后跟一个*
ex。 0123*****
。但我想在同一个表达式中包含*****0123
的模式。我怎么能在java中做到这一点。现在它如下
String numericPattern = "[*0-9]";
答案 0 :(得分:1)
如果我理解正确,你想要
^\**\d+\**$
表示任意数量的星号(\**
),后跟至少一个数字(\d+
),然后再表示任意数量的星号(包括零)(\**
) 。由于*
是正则表达式中的特殊字符(量词意味着任意数量的前面字符/类/组),因此必须使用\
进行转义以匹配文本*
。
行(^
)和行尾($
)锚点的开头确保没有其他但匹配模式。
请注意,在java中你必须转义反斜杠,所以你最终会得到像
这样的东西String numericPattern = "\\**\\d+\\**";
答案 1 :(得分:0)
我认为这就是你想要的:
(\*+\d+)|(\d+\*+)
打破它:
(\*+\d+)
文字星号\*
一次或多次+
后跟数字\d
一次或多次+
。
|
或
(\d+\*+)
数字\d
一次或多次+
后跟文字星号\*
一次或多次+
。
正如ClasG所说,你需要在Java中使用斜杠,所以你的模式看起来像:
String numericPattern = "(\\*+\\d+)|(\\d+\\*+)";
答案 2 :(得分:0)
星形字符是正则表达式中的量词。如果你的字面意思是明星角色你必须逃脱它。以下表达式允许一个或多个恒星后跟一个或多个密码或一个或多个密码,后跟一个或多个恒星。
Pattern p = Pattern.compile("(\\*+[0-9]+)|([0-9]+\\*+)");