Regex用连字符分隔文本



假设我们有以下字符串:

"我们需要以下产品的列表:-Abcd efgh ejklm-efgh ij sklrm,defasad-KLMNNOP/QRS dasfdssa eadsd">

我想要一个返回的正则表达式:

- Abcd efgh, ejklm
- Efgh-ij sklrm, defasad
- KLMNNOP/QRS dasfdssa eadsd

我写了一个正确的词,但如果我们有一个合成词,它会被剪掉。

import re
regx = '-s[ws/?,;!:#&@]*' # start with hyphen + space + mix of different characters
z = re.findall(regx, 'We need the list fo the following products: - Abcd - Efgh-ij - KLMNNOP/QRS')
for p in z:
print(p)
- Abcd efgh, ejklm 
- Efgh
- KLMNNOP/QRS dasfdssa eadsd

您可以重复匹配当前字符类,或者只匹配一个连字符后跟单词字符

-s(?:[ws/?,;!:#&@]+|-w+)+

请参阅regex演示和Python演示。

如果不想匹配空部分,可以将字符类的量词更改为+以匹配1次或多次。

示例

import re
regx = '-s(?:[ws/?,;!:#&@]+|-w+)+'
z = re.findall(regx, 'We need the list fo the following products: - Abcd efgh ejklm - Efgh-ij sklrm, defasad - KLMNNOP/QRS dasfdssa eadsd')
for p in z:
print(p)

输出

- Abcd efgh ejklm 
- Efgh-ij sklrm, defasad 
- KLMNNOP/QRS dasfdssa eadsd

或者更广泛的匹配,而不仅仅是单词字符:

-s(?:[ws/?,;!:#&@]+|-[w/?,;!:#&@]+)+

相关内容

  • 没有找到相关文章

最新更新