正则表达式/ grep将点路径拉出字符串

时间:2012-08-06 19:21:22

标签: regex grep

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

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

以下正则表达式给出了字符串validation.password.blah的前三部分,但是错过了.foo

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

你应该记住,它不会包括最后",只接受点之间的字母。

答案 2 :(得分:0)

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

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

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