RegEx-删除特定模式(例如前缀和后缀)的更有效方法

时间:2018-11-13 15:16:46

标签: regex

我有一个在字符串中具有三种不同类型模式的数据集

p__OP3(100)

c__Verruco-5

未分类

目标是编写一个RegEx,该前缀将把可用的前缀c__和p__以及任何[]和任何括号以及其中的括号(100),(77)

删除

我想到了     ^\w\_\_\[|\W\([^)]*\)|\([^)]*\)|^\w\_\_

预期输出:

OP3

Verruco-5

未分类

但是这似乎效率很低,有没有更有效的书写方式?

1 个答案:

答案 0 :(得分:1)

^\w\_\_只能使用此部分一次,并创建一个字符类以匹配右方括号或右方括号。 并不是说您不必转义下划线就可以完全匹配它。

您可以使用3个替代方式来匹配带双下划线的前缀,开括号或闭括号或括号以及括号内的内容:

^\w__|[\][]|\([^)]*\)

Regex demo

然后您可以将这些匹配项替换为空字符串。

说明

  • ^断言字符串的开头
  • \w__匹配单词字符,后跟下划线2次
  • |
  • [\][]匹配右方括号或右方括号
  • |
  • \([^)]*\)使用否定的字符类将左括号和右括号匹配。如果您还想匹配一个可选的非文字字符,那么您可以在\W?之前加上\W?\([^)]*\),例如SqlQueryFields