line.matches("[A-Z] ([a-zA-z][a-zA-Z]*)|\\#")
我需要阅读像这样的元素
"A ddg"
,"B gH"
或"D #"
但它不起作用,我需要知道正则表达式是否正常。
答案 0 :(得分:2)
试试这个:
line.matches("[A-Z] ([a-zA-Z]+|#)")
你的大部分正则表达都是多余的:
\\#
与#
相同 - #
[a-zA-Z][a-zA-Z]*
与[a-zA-Z]+
你缺少的是正确的交替 - 你没有在正确的位置关闭括号。
答案 1 :(得分:1)
这将有效:
line.matches("[A-Z]( [a-zA-z]+)?( #)?")
匹配的内容(示例):
A
A #
A a
A aAaA
A a #
A aAaAa #
如果你不想要" A#":
line.matches("[A-Z]( [a-zA-z]+| #)")
答案 2 :(得分:1)
你有这个问题:
#
放在了它之外,A-z
范围代替A-Z
。 此外,您可以稍微改善一下你的正则表达式:
#
xx*
您可以使用x+
,因为:
+
代表一次或多次 *
代表零或更多 请尝试使用
line.matches("[A-Z] ([a-zA-Z]+|#)")