RegEx-删除特定模式(如前缀和后缀)的更有效方法
我有一个数据集,在字符串中有三种不同类型的模式 p__OP3(100) c__疣-5 未分类 我们的目标是编写一个正则表达式,在可用的地方去掉前缀,也就是c_uuu和p_uuu,以及任何[]和任何括号,以及括号内的内容(100),(77) 我想出了RegEx-删除特定模式(如前缀和后缀)的更有效方法,regex,Regex,我有一个数据集,在字符串中有三种不同类型的模式 p__OP3(100) c__疣-5 未分类 我们的目标是编写一个正则表达式,在可用的地方去掉前缀,也就是c_uuu和p_uuu,以及任何[]和任何括号,以及括号内的内容(100),(77) 我想出了 ^\w\\\\[\\w\([^)]*\)\\([^)]*\)^\w\\\ 预期产出: OP3 疣-5 未分类 然而,这似乎效率很低,有没有更有效的方法来编写它?您只能使用此部分一次,然后创建一个字符类来匹配右括号或左括号。 并不是说你不必转义下划线来
^\w\\\\[\\w\([^)]*\)\\([^)]*\)^\w\\\
预期产出:
OP3
疣-5
未分类
然而,这似乎效率很低,有没有更有效的方法来编写它?您只能使用此部分一次,然后创建一个字符类来匹配右括号或左括号。 并不是说你不必转义下划线来匹配它 您可以使用3种备选方案来匹配前缀和双下划线、开始或结束方括号或圆括号以及其中的内容:
^\w_uu124;[\][\].[^]*\)
然后可以用空字符串替换这些匹配项
解释
断言字符串的开头^
匹配单词字符,后跟2倍下划线\w\uuu
或|
匹配结束或开始方括号[\][]
或|
使用否定字符类将左括号和右括号与括号内的内容匹配。如果还希望匹配可选的非单词字符,则可以在左括号前添加\([^)]*\)
,如\W?
\W?\([^)]*\)
^\w\uuU\[?\ w?\([^)]*\)
或尝试^\w\uU124;[].[].[[^)]*\
@第四只有趣的鸟。我不会期望[]
以这种方式工作。@Gary在此声明,这不适用于Javascript和Ruby。要求用反斜杠转义右括号,将其作为文本包含在字符类中。