Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RegEx-删除特定模式(如前缀和后缀)的更有效方法_Regex - Fatal编程技术网

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

RegEx-删除特定模式(如前缀和后缀)的更有效方法,regex,Regex,我有一个数据集,在字符串中有三种不同类型的模式 p__OP3(100) c__疣-5 未分类 我们的目标是编写一个正则表达式,在可用的地方去掉前缀,也就是c_uuu和p_uuu,以及任何[]和任何括号,以及括号内的内容(100),(77) 我想出了 ^\w\\\\[\\w\([^)]*\)\\([^)]*\)^\w\\\ 预期产出: OP3 疣-5 未分类 然而,这似乎效率很低,有没有更有效的方法来编写它?您只能使用此部分一次,然后创建一个字符类来匹配右括号或左括号。 并不是说你不必转义下划线来

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

p__OP3(100)

c__疣-5

未分类

我们的目标是编写一个正则表达式,在可用的地方去掉前缀,也就是c_uuu和p_uuu,以及任何[]和任何括号,以及括号内的内容(100),(77)

我想出了
^\w\\\\[\\w\([^)]*\)\\([^)]*\)^\w\\\

预期产出:

OP3

疣-5

未分类


然而,这似乎效率很低,有没有更有效的方法来编写它?

您只能使用此部分一次,然后创建一个字符类来匹配右括号或左括号。 并不是说你不必转义下划线来匹配它

您可以使用3种备选方案来匹配前缀和双下划线、开始或结束方括号或圆括号以及其中的内容:

^\w_uu124;[\][\].[^]*\)

然后可以用空字符串替换这些匹配项

解释

  • ^
    断言字符串的开头
  • \w\uuu
    匹配单词字符,后跟2倍下划线
  • |
  • [\][]
    匹配结束或开始方括号
  • |
  • \([^)]*\)
    使用否定字符类将左括号和右括号与括号内的内容匹配。如果还希望匹配可选的非单词字符,则可以在左括号前添加
    \W?
    ,如
    \W?\([^)]*\)

示例字符串的预期输出是什么?请尝试
^\w\uuU\[?\ w?\([^)]*\)
或尝试
^\w\uU124;[].[].[[^)]*\
@第四只有趣的鸟。我不会期望
[]
以这种方式工作。@Gary在此声明,这不适用于Javascript和Ruby。
要求用反斜杠转义右括号,将其作为文本包含在字符类中。