正则表达式在一行

时间:2016-03-03 02:27:45

标签: regex sublimetext2 notepad++

我正在尝试使用正则表达式获得2个或更多3个单词。但是我很难只得到单词而不是整行。

下面是文字。

  

3255 2010-02-14 13:17:14 WARN HA在接下来的600秒内禁用警报。政策仍然执行

     

3256 2010-02-14 13:18:17 WARN UDM自适应滤波器配置禁用过滤器" 13379:HTTP:酷PDF图像流长度缓冲区溢出漏洞" [00000002-0002-0002-0002-000000013379]

我使用的正则表达式是

\d{4}-\d{2}-\d{2}.*disabled filter.*$  -> this work but will get the whole line. 

我正在尝试仅从文本

获取日期和禁用的过滤器

离。 2016-02-14 13:18:17 filter" 13379:HTTP:很酷的PDF图像流长度缓冲区溢出漏洞"

我尝试使用管道,但它也会在不同的行上获得另一个日期

[0-9]{4}-[0-9]{2}-[0-9]{2}|disabled filter|"[0-9]{5}.+"

有人可以为此提供帮助吗?

1 个答案:

答案 0 :(得分:0)

由于缺少语言,这里的解决方案很少。

  

的Python

match = re.search('(?<=disabled filter ")[^"]+', subject, re.IGNORECASE | re.MULTILINE)
if match:
    result = match.group()
  

爪哇

Pattern regex = Pattern.compile("(?<=disabled filter \")[^\"]+", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE | Pattern.MULTILINE);
Matcher regexMatcher = regex.matcher(subjectString);
if (regexMatcher.find()) {
    ResultString = regexMatcher.group();
} 
  

Notepad ++和Sublime Text

(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})(?:.*)(?<=disabled filter ")([^"]+)

组(1)将date,组(2)包含filter