Regex-如何在更大的整个字符串中找到此特定的字符串片段

问题描述 投票:0回答:2

继上一个问题(How do i find multiple occurences of this specific string and split them into a list?)之后,由于规则已更改,我现在要问更多其他问题。

这里是字符串,黑体字是我要提取的那些。

text | p1_1_1120170AS074192161A0Z20 | C M E-整流器 | @ |文本| p1_2_1120170AS074192161A0Z20 |华为| @ |文本| p1_3_1120170AS074192161A0Z20 |整流器模块3KW | @ |文本| p1_4_1120170AS074192161A0Z20 |双灯6-FMX-170 | @ |文本| p1_5_1120170AS074192161A0Z20 | 24021665 | @ |文本| p1_6_1120170AS074192161A0Z20 | 1120170AS074192161A0Z20 | @ |文本| p1_7_1120170AS074192161A0Z20 | OK | @ |文本| p1_8_1120AS01920192 | 1921AAS1901Z0A0Z0192 | -OK | @ | text | site_id | 20MJK110 | @ | text | barcode_flag | auto | @ | text | movie_flag || @ | text | of_measurement || @@ text | flag_waste | no | @ | text | req_qty_db | 2 | @ | text | req_qty | 2

这是我当前的正则表达式:

(?<=p1\_1\_.*)[^|]+(?=\|\@\|.*|$)

https://regexr.com/中尝试之后,我找到了结果:

text | p1_1_1120170AS074192161A0Z20 | C M E-整流器 | @ |文本| p1_2_1120170AS074192161A0Z20 | 华为 | @ |文本| p1_3_1120170AS074192161A0Z20 | 整流器模块3KW | @ | text | p1_4_1120170AS074192161A0Z20 | 双灯6-FMX-170 | @ |文本| p1_5_1120170AS074192161A0Z20 | 24021665 | @ |文本| p1_6_1120170AS074192161A0Z20 | 1120170AS074192161A0Z20 | @ |文本| p1_7_1120170AS074192161A0Z20 | 1_1 | 1_1> 0 | @ | text | p1_9_1120170AS074192161A0Z20 | ACTIVE | @ | text | p1_10_1120170AS074192161A0Z20 | -OK | @ | text | site_id | 20MJK110 | @@ | text | barcode_flag | auto || @ | text | movie_flag || @@ text |计量单位|| @ | text | flag_waste | no | @ | text | req_qty_db | 2 | @ | text | req_qty | 2]] >问题仍然存在:“

为什么不只返回第一个匹配的事件?

”。让我们考虑一下,如果第一个“小节”之间的值是空的,那么它将返回下一个小节的值。示例:

text | p1_1_1120170AS074192161A0Z20 || @ |文本| p1_2_1120170AS074192161A0Z20 |

华为

| @ | text。 。 。而且我不想要那个。让它只是不返回任何内容(什么都不匹配)。

获得这种匹配的正确正则表达式是什么?谢谢:)。

继上一个问题(如何查找该特定字符串的多次出现并将它们拆分为列表?)之后,由于规则已更改,因此我现在要提出更多问题。这是...

python regex regex-lookarounds regex-group text-processing
2个回答
0
投票
doc='text|p1_1_1120170AS074192161A0Z20|C M E - Rectifier|@|text|p1_2_1120170AS074192161A0Z20|Huawei|@|text|...' re.findall('[^|]+(?=\|\@\|)', doc)
在重新表达中:

0
投票
此数据看起来比您认为的要结构化。正则表达式非常适合例如从非结构化文本中提取电子邮件地址,但此数据似乎以一种简单的方式进行了分隔。
© www.soinside.com 2019 - 2024. All rights reserved.