我正在尝试为这种情况做一个正则表达式:
1) Any title
2) Any title (2016)
3) Any title (2016 Any text)
我需要括号(标题)和年内(年)之前的文本。案例示例:
1)
Title: Any title
Year: null
2)
Title: Any title
Year: 2016
3)
Title: Any title
Year: 2016
我这样做正则表达式:
(.*)(?:\s(\((\d+)(?:\D*)?)\))?
但是不行。
答案 0 :(得分:2)
你可以去:
^ # start of the string
(?P<title>[^\n()]+) # anything not a (, ) or newline -> "title"
(?: # non-capturing group
\( # ( literally
(?P<year>\d{4}) # four digits -> "year"
[^)]*\) # anything not ), followed by )
)? # make the whole group optional
请参阅a demo on regex101.com
如果不支持命名的捕获组(您没有指定任何编程语言),只需省略?P<>
部分并使用组号1
和2
代替。