如何在使用捕获组时修改字母数字字符的正则表达式

时间:2016-05-17 07:09:44

标签: python regex python-3.x

我的正则表达式用于匹配电子邮件,watzapp,Viber,Line,BBM,Snapchat和电话联系人。

表达式为: -

(?i)([\w.]+@[\w.]+)|(?:(?:\b|[,/]\s*)(?:whatsapp|viber|wechat))+\b\s*[::]?\s*(\+?\d+)|\bline(?:\sid)?\s*(?:[::]\s*)?(@\w+)|((?:\+\d+)?[ -]?(?:\(\d+\)[ -]?)?[\d -]{6,}\d)

示例字符串是: -

1) Contact\n♬Line : @PIJ2410J (fast)\n♬BBm : 7470287C\nCustom Case : @KatalogVladdera\nBeauty Care : @Beauty.Vladdera\nTanyakan Stock Dahulu 

2) 8349557\nBhayangkari MOMENT INFINITY\nBISNIS HALAL\n \nINCOME 125rb-14juta /hari\nJoin with myteam fullsuport\n 082120504980\nPin BB :5A878C9D

3) 5-yr online store  Real pictures Mirror Quality 1:1 Whatsapp/Viber +861776345378 spikydudewonderland@gmail.com ✈️✈️Worldwide Shipping

4) Девочки это наша новая страничка.Только копии Lux, искателям дешевых подделок не беспокоить. По всем вопросам viber,whatsapp +79128743333 Лианна

5)Recruitment AgentsThe most powerful manufacturers,we have thebest quality.Wechat:13255996580Whatsapp:+8618820784535

6)  เข้าช้อปทุกวันจ้า ซื้อกับวี้ได้ของแท้แน่นอนค่า แบรนด์อื่นสอบถามได้ค่า ดรีวิว@reviewkayasisshopp LINE ID : @kux1427k (มี @ ด้วยจ้า)

正如你所看到的,我已经把它变成了捕获组。我的表达式无法匹配字母数字的BBM引脚。如何进行更改?请帮忙。

以下是我尝试过的regex101的链接。https://regex101.com/r/xQ0fM2/5

1 个答案:

答案 0 :(得分:1)

您的正则表达式可以增强,以匹配appending \bBBM\s*:\s*(\w+) to its end所需的代码。

请注意,\w可以匹配下划线,因此,如果应排除下划线,\w可以替换为[^\W_]

另外,我认为可选的(?:\+\d+)?[ -]?(?:\(\d+\)[ -]?)?根本不需要,它只会妨碍性能并且可以删除。

尝试

([\w.]+@[\w.]+)
|
(?:(?:\b|[,/]\s*)(?:whatsapp|viber|wechat))+\b\s*[::]?\s*(\+?\d+)
|
\bline(?:\sid)?\s*(?:[::]\s*)?(@\w+)
|
([\d -]{6,}\d)
|
\bBBM?\s*:\s*(\w+)

或一行:

([\w.]+@[\w.]+)|(?:(?:\b|[,/]\s*)(?:whatsapp|viber|wechat))+\b\s*[::]?\s*(\+?\d+)|\bline(?:\sid)?\s*(?:[::]\s*)?(@\w+)|([\d -]{6,}\d)|\bBBM?\s*:\s*(\w+)

请参阅regex demo

[\d -]{6,}\d部分也可以改进,但是要测试的数据太少了。