我是regex的新手,我正在努力想出一些与下面的文字相符的内容:
ABC:(z)1999年1月2日\ n
注意:
非常感谢任何帮助!谢谢
答案 0 :(得分:34)
以下内容应该有效:
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]+\).+)
答案 1 :(得分:4)
在不知道您正在使用的确切正则表达式实现的情况下,我只能提供一般性建议。 (语法我将perl,因为我知道,有些语言需要调整)
查看ABC: (z) jan 02 1999 \n
/ABC:/
你说ABC总是在字符串的开头,所以/^ABC/
将确保ABC位于字符串的开头。
您可以使用\s
(注意案例)指令匹配空格。使用所有指令,您可以将一个或多个指令与+
匹配(或与*
匹配0或更多)
您需要转义(
和)
的使用,因为它是保留字符。所以\(\)
您可以使用.
你可以使用.*
匹配任何内容,但是你需要小心,不要过于贪婪并抓住所有内容。
所以为了捕捉你所问的内容。我会使用/^ABC:\s*\(.+?\)\s*(.+)$/
我读作:
从ABC开始:
可能有一些空格
有(
有一些字符
有)
可能有一些空格
然后捕获所有内容,直到行尾(
$
)。
我强烈建议保留以下内容的副本 http://www.cheatography.com/davechild/cheat-sheets/regular-expressions/
答案 2 :(得分:1)
这应该符合您的要求。
ABC:\s*(\(\D+\)\s*.*?)\\n
这是一些测试http://www.regexplanet.com/cookbook/ahJzfnJlZ2V4cGxhbmV0LWhyZHNyDgsSBlJlY2lwZRiEjiUM/index.html
继续阅读正则表达式:http://www.regular-expressions.info/characters.html