0

鉴于以下字符串可能在各种文档和各种不同格式中出现任意次数,我想拉出引号之间的部分。我只想要满足以下条件的字符串。以 " 开头和结尾(在两个引号之间)并且在字符串中包含 1 个或多个点 (.)。

@CheckWith(value = PasswordCheck.class, message = "validation.password.blah.foo")

以下正则表达式为我提供了字符串 validation.password.blah 的前三个部分,但错过了 .foo

(\")([a-zA-Z]{1,}\.{1}){1,}
4

3 回答 3

1

尝试以下操作:

"([a-zA-Z]{1,}\.[a-zA-Z.]{1,})"

请注意,{1,}您通常可以使用来代替+,但我不确定 grep 是否在没有扩展选项的情况下支持它。

解释:

"                  # match a literal '"' character
(                  # start capture group
  [a-zA-Z]{1,}       # one or more letters
  \.                 # match a literal '.' character
  [a-zA-Z.]{1,}      # one or more letters or '.' characters
)                  # end capture group
"                  # match a literal '"' character
于 2012-08-06T19:27:12.563 回答
0

我认为您正在寻找的正则表达式是这样的:"[a-zA-Z]+(\.[a-zA-Z]+)+

您应该记住,它不包括最后一个",并且只接受点之间的字母。

于 2012-08-06T19:27:31.697 回答
0

如果你有egrep(或grep -E),你可以使用

"([a-zA_Z]+\.)+[a-zA-Z]+"

(引号是正则表达式的一部分,如果需要,请转义)。

于 2012-08-06T19:28:18.413 回答