我有以下短语:
05/30/2016 07:02 AM (GMT+02:00) added by XXX YYY (PID-000301):\tSome_alphanum_text_Some_alphanum_text_Some_alphanum_text_Some_alphanum_text\t\t*************************************************************************************************\t05/12/2016 02:03 PM (GMT+02:00) added by ZZZ AAA (PID-000301):\tSome_other_alphanum_text_Some_other_alphanum_text_Some_other_alphanum_text_Some_other_alphanum_text\t\t
我想写一个RegEx,它只为我提供“ Some_alphanum_text”和“ Some_other_alphanum_text”的信息。
到目前为止,我正在尝试像这样的运气:
r'(?:.+\(PID-\d{6}\):)(.+)'
但这只是给我'Some_other_alphanum_text'的出现。 我需要从这个混乱的文本中找出两个以上的唯一字符串。有什么想法吗?
答案 0 :(得分:0)
您需要将.+
替换为仅与您要返回的内容匹配的内容。由于您只想匹配字母数字文本,因此请使用\w
而不是.
r'(?:\(PID-\d{6}\):)\s*(\w+)'
您需要在第二组之前输入\s*
,因为字母数字文本之前的空格将与\w+
不匹配。
您一开始也不需要.+
。比赛将在找到PID
的地方开始。
答案 1 :(得分:0)
答案 2 :(得分:0)
我没有将正则表达式区域更改为代码块,因此它无法正常工作。
现在可以了!您应该考虑的一件事是可能没有'\ t'。但是
每个匹配的文本都采用日期格式,例如05/12/2016 02:03或结束。
\(PID-\d{6}\)[\n\r\t\s]*:(?:.|[\n\r\t\s])*?(?=[0-9]{2}\/[0-9]{2}\/[0-9]{4}[\n\r\t\s]*[0-9]{2}:[0-9]{2}|$)
答案 3 :(得分:0)