我有2种不同的文字字符串:
10.09.2016 | 45 Min. | SWR Fernsehen | UT
或
07.09.2016 | 57 Min. WDR Fernsehen
我希望最终得到:
SWR Fernsehen | UT
和
WDR Fernsehen
这是我试图获得捕获组的原因:
\\.\s(.*)
返回:
| SWR Fernsehen | UT
WDR Fernsehen
我无法解释如何说"在"。"之后采取一切措施。但忽略" |"
任何想法?
答案 0 :(得分:1)
您可以使用以下正则表达式:
.*\.(?:\s*\|)?\s*(.*)
请参阅regex demo
.*\.
将匹配并包括最后一个.
(因为*
是一个贪婪的量词),(?:\s*\|)?
将匹配0 +空格的一个或零个序列+ |
,\s*
- 零个或多个空格,(.*)
将剩下的空白用于第1组,只需使用工具/语言功能访问此组内容。
答案 1 :(得分:1)
您可以使用\.[|\s]*([^.]+)$
获取最后一个点之后的所有内容,省略可能的空格和|一开始。
例如在Javascript中:
str.match(/\.[|\s]*([^.]+)$/)[1]
为您提供所需的部分。如果您不确定是否匹配,请先查看str.match(/\.[|\s]*([^.]+)$/)
isn&t [t} null
。
答案 2 :(得分:0)
答案 3 :(得分:0)
\.(\s|\s\|\s)(.*)
或者
\.(\s(.*)|\s\|\s(.*))