我有一个在字符串中具有三种不同类型模式的数据集
p__OP3(100)
c__Verruco-5
未分类
目标是编写一个RegEx,该前缀将把可用的前缀c__和p__以及任何[]和任何括号以及其中的括号(100),(77)
删除我想到了
^\w\_\_\[|\W\([^)]*\)|\([^)]*\)|^\w\_\_
预期输出:
OP3
Verruco-5
未分类
但是这似乎效率很低,有没有更有效的书写方式?
答案 0 :(得分:1)
^\w\_\_
只能使用此部分一次,并创建一个字符类以匹配右方括号或右方括号。
并不是说您不必转义下划线就可以完全匹配它。
您可以使用3个替代方式来匹配带双下划线的前缀,开括号或闭括号或括号以及括号内的内容:
^\w__|[\][]|\([^)]*\)
然后您可以将这些匹配项替换为空字符串。
说明
^
断言字符串的开头\w__
匹配单词字符,后跟下划线2次|
或[\][]
匹配右方括号或右方括号|
或\([^)]*\)
使用否定的字符类将左括号和右括号匹配。如果您还想匹配一个可选的非文字字符,那么您可以在\W?
之前加上\W?\([^)]*\)
,例如SqlQueryFields