Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 捕获字符串文本(可选正则表达式)_Regex - Fatal编程技术网

Regex 捕获字符串文本(可选正则表达式)

Regex 捕获字符串文本(可选正则表达式),regex,Regex,我期望从中得到的结果是 SE 180,个体研究,2016年8月24日,2016年12月12日,R MAK SE 180,个体研究,2016年8月24日,2016年12月12日,H Katirioglu 但是,正如您所看到的,有时由于数据文件的转换方式,在前两个数据字段之间会出现意外的(按钮) 这是我想出的正则表达式。我不明白为什么它不能捕获。我在跳,一双眼睛会帮助我理解我的错误。我对regex还是个新手,不过以下是我的理解 在我的例子中,为了捕获字符串文字“(button)”,我键入\(butt

我期望从中得到的结果是

  • SE 180,个体研究,2016年8月24日,2016年12月12日,R MAK
  • SE 180,个体研究,2016年8月24日,2016年12月12日,H Katirioglu
  • 但是,正如您所看到的,有时由于数据文件的转换方式,在前两个数据字段之间会出现意外的
    (按钮)

    这是我想出的正则表达式。我不明白为什么它不能捕获。我在跳,一双眼睛会帮助我理解我的错误。我对regex还是个新手,不过以下是我的理解

    在我的例子中,为了捕获字符串文字“(button)”,我键入
    \(button\)
    。对于我的数据,字符串文字总是以空格结尾。我想让整个数据组成为可选的。因此,我的结果是,
    (?:\(按钮\)\s?

    使用正则表达式

    数据集

    SE 180 INDIVIDUAL STUDIES 92 49321 3 SUP 73 P 1/90 F 0730-1020 08/24/16-12/12/16 ENG 189 R MAK 
    SE 180 
    (button) 
    INDIVIDUAL STUDIES 90 49320 3 SUP 73 P 0/50 MW 1500-1615 08/24/16-12/12/16 ENG 337 H KATIRCIOGLU 
    

    删除模式中的
    ?:
    。这就是破坏它的原因

    ([A-Z]+\s\s+)\s(\(按钮)\s?)([A-Z]+.+)\s\d++\s\d++.(\d\d\/\d\d\/\d\d)-(\d\d\/\d\d\/\d\d)\s?(?:.*([A-Z]\s[A-Z]+-*[A-Z]+)?\s


    测试字符串在
    (按钮)
    前后实际上有多个空格字符。一个是换行符,另一个是空白

    您需要在
    (按钮)
    周围使用
    \s+
    \s*
    ,而不仅仅是
    \s


    我试过了,但它仍然有效,而且我还有
    ?:
    ,因为我不想捕获其中的数据。这不是一个很好的方法吗?我看到您的第二个测试用例在(按钮)前后都有新行。一般都是这样吗?谢谢你,先生!我对regex还是相当陌生,所以我自动地认为这更多的是我自己的语法错误,而不是对
    \n
    和空格的判断失误。再次感谢你!
    SE 180 INDIVIDUAL STUDIES 92 49321 3 SUP 73 P 1/90 F 0730-1020 08/24/16-12/12/16 ENG 189 R MAK 
    SE 180 
    (button) 
    INDIVIDUAL STUDIES 90 49320 3 SUP 73 P 0/50 MW 1500-1615 08/24/16-12/12/16 ENG 337 H KATIRCIOGLU 
    
    ([A-Z]+\s\S+)\s+(?:\(button\)\s*)?([A-Z]+.+?)\s\d+\s\d+.+?(\d\d\/\d\d\/\d\d)-(\d\d\/\d\d\/\d\d)\s?(?:.*?([A-Z]\s[A-Z]+-*[A-Z]+))?\s
                   ^               ^