2012-10-01 189 views
13

我新的正则表达式,我想拿出的东西,会匹配以下文字:使用通配符正则表达式匹配任何字符

ABC:(Z)1999年1月2日\ n

注:

  • 文本将始终以开展 “ABC:”
  • 之间可能存在零,一个或多个空格 ':' 和(Z)。的
  • 变化(Z)也可以 - (ZZ),(ZZZZZZ)..等,但总是封闭在 非数字字符 “()”
  • 可以存在零个,一个或多个 之间的空间( z)和扬
  • 一月可能是月,1月,在任何格式等
  • 日期couldbe,可能/可能不包含其他文本作为它的一部分,所以 我真的想知道是否有一个正则表达式我可以用于捕获 任何东西以及在'(z)'和'\ n'之间找到的所有东西。

任何帮助,非常感谢!谢谢

+2

你尝试过什么到目前为止副本?它与你想要的有什么不同? – octern

+0

请注意:我使用regexplanet.com/advanced/java/index.html来测试我的正则表达式。对不起,我应该早些提到这一点。因此,使用样本字符串“ABC:(z)Feb 2 1988 \ n”..我的第2组结果应该是“(z)Feb 2 1988” – chapstick

回答

26

下面应该工作:

ABC: *\([a-zA-Z]+\) *(.+) 

说明:

ABC:   # match literal characters 'ABC:' 
*    # zero or more spaces 
\([a-zA-Z]+\) # one or more letters inside of parentheses 
*    # zero or more spaces 
(.+)   # capture one or more of any character (except newlines) 

要根据下面的评论中得到您想要的分组,您可以使用以下命令:

(ABC:) *(\([a-zA-Z]+\).+) 
+0

谢谢表达式请参阅我对deltree的评论 – chapstick

+0

@chapstick - 增加了另一个版本,该版本应该有从括号到行尾的第2组匹配。 –

+0

谢谢你的工作! – chapstick

0

这应该满足您的要求。

ABC:\s*(\(\D+\)\s*.*?)\\n

这与一些测试http://www.regexplanet.com/cookbook/ahJzfnJlZ2V4cGxhbmV0LWhyZHNyDgsSBlJlY2lwZRiEjiUM/index.html

Futher正则表达式阅读:http://www.regular-expressions.info/characters.html

+0

谢谢你的回应。我使用http://www.regexplanet.com/advanced/java/index.html来测试我的正则表达式。对不起,我应该早些提到这一点。因此,使用示例字符串“ABC:(z)Feb 2 1988 \ n”..我的结果对于第2组应该是“(z)Feb 2 1988”...我无法使用上述任何一个表达式:( – chapstick

+0

@chapstick'捕获'(z)'和'\ n''之间的任何内容,所以你想在组中使用(z)和\ n?为什么使用组2? – deltree

+0

我想要(z),但只有东西和不包括'\ n'。我故意避免详细说明为什么组2 ..其他东西将使用组2中的值做进一步处理:) – chapstick

4

不知道你正在做的使用正则表达式的确切落实,我只能给一般建议。 (我将Perl作为该语法是我知道的,有些语言要求的调整)

ABC: (z) jan 02 1999 \n

  • 的第一件事匹配展望为ABC:所以用我们的正则表达式是/ABC:/
  • 您说ABC始终在字符串的开头,因此/^ABC/将确保ABC位于字符串的开头。

  • 您可以将空格与\s(注意大小写)指令相匹配。对于所有指令,可以匹配一个或多个与+(或0或以上,*

  • 你需要逃避的()使用,因为它是一个保留字符。所以\(\)

  • 您可以匹配任何非空格或换行符与.

  • 可以匹配任何东西与.*但你必须要小心,你不是太贪婪和捕捉一切。

所以为了捕捉你的问题。我会用/^ABC:\s*\(.+?\)\s*(.+)$/

这我理解为:

开始与ABC:

可能有一定的空间

有(

有一些字符

有)

可能有一些空格

然后捕获一切​​,直到行的末尾(这是$)。

我强烈建议保持以下的铺设约 http://www.cheatography.com/davechild/cheat-sheets/regular-expressions/