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
(按钮)
这是我想出的正则表达式。我不明白为什么它不能捕获。我在跳,一双眼睛会帮助我理解我的错误。我对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
^ ^