【发布时间】:2019-03-15 15:26:36
【问题描述】:
有一个非常复杂的正则表达式。
但我有一个问题。如果# 和++ 后面有字母,则删除它们。
问题:如何为(C++ 和 C# 标记)的当前正则表达式添加异常?
我使用了下一个正则表达式:
import re
text = 'Must-have skills: -.Net programming experience; -2 years experience in C++; C#/.Net, C++/.Net, C./.Net.'
text = re.sub(r'[!,.:;—](?= |$)', ' ', text)
print(re.sub(r'(?i)(?:(?!\.net\b|\b-\b)[^\w\s])+(?=[^\w\s]*\b)', ' ', text))
我得到了下一个结果:
'Must-have skills .Net programming experience 2 years experience in C++ C .Net C .Net C .Net '
期望的结果:
'Must-have skills .Net programming experience 2 years experience in C++ C# .Net C++ .Net C .Net '
当前正则表达式详细信息
-
(?i)- 不区分大小写模式开启 -
(?:(?!\.net\b|\b-\b)[^\w\s])+- 任何标点符号 ([^\w\s]),尽可能多地出现 1 次或多次,但不启动任何序列:-
\.net\b-.net全文 -
|- 或 -
\b-\b- 用字符括起来的连字符
-
-
(?=[^\w\s]*\b)- 正向前瞻,需要 0+ 个标点字符,后面紧跟当前位置右侧的单词边界位置。
【问题讨论】: