我希望能够在java中编写一个正则表达式,以确保匹配以下模式。
<D-05-hello-87->
对于字母D,这可以是大写字母的'D'或'E',也可以只有一个字母。
您看到的两个数字必须始终为2位十进制数字,而不是1或3个数字。
字符串必须以'&lt;'开头和结尾和'&gt;'并包含' - '以分隔其中的部分。
中间'hello'中的消息可以是任何字符,但长度不得超过99个字符。它可以包含空格。
此模式也将重复,因此表达式需要识别这些模式的logn字符串中的不同个别模式,并确保它们遵循此模式结构。 E.g
到目前为止,我已经尝试过这个:
([<](D|E)[-]([0-9]{2})[-](.*)[-]([0-9]{2})[>]\z)+
但问题是(。*)在任何字符匹配中看到任何后面的内容并忽略其余的模式。
怎么可能这样做? (使用Java reg ex语法)
答案 0 :(得分:2)
答案 1 :(得分:1)
更新:已测试并正常工作
<([DE])-(\d{2})-(.{1,99}?)-(\d{2})>
看到它正常工作:http://rubular.com/r/6Ozf0SR8Cd
您不应将-
,<
和>
包裹在[ ]
答案 2 :(得分:0)
假设您想要在第一个短划线停留,可以使用[^-]*
代替.*
。这将匹配所有非短划线字符。