Regex 如何仅选择前瞻性匹配
我找到了一个很好的正则表达式,但我很难排除部分比赛 我想要的是选择括号,但前提是开始和结束括号之间有1个数字(多个数字),或者只有一个字符,或者括号之间为空()。如果()前面有某个字符,则不应选择它。我用它来替换字符串的某些部分,因此我只想匹配括号,因为我想删除它们。当前regExp与括号及其内部的部分匹配Regex 如何仅选择前瞻性匹配,regex,actionscript-3,actionscript,Regex,Actionscript 3,Actionscript,我找到了一个很好的正则表达式,但我很难排除部分比赛 我想要的是选择括号,但前提是开始和结束括号之间有1个数字(多个数字),或者只有一个字符,或者括号之间为空()。如果()前面有某个字符,则不应选择它。我用它来替换字符串的某些部分,因此我只想匹配括号,因为我想删除它们。当前regExp与括号及其内部的部分匹配 .(?<=[^a-z]\()([\d]*|[a-zA-Z])(?=\)). (x+2)/(x) -> only select ( ) in (x) -(2)+.
.(?<=[^a-z]\()([\d]*|[a-zA-Z])(?=\)).
(x+2)/(x) -> only select ( ) in (x)
-(2)+. -> only select ( ) in (2)
(wsd). -> select nothing
(x)^2+2 -> only select ( ) in (x)
sin(x). -> select nothing
(22313)a. -> only select ( ) in (22313)
+23-3()/(3x)+(x). -> only select () in () and ( ) in (x)
sin(x)+3*x^2+(x)+23 -> only select ( ) in (x)
(.仅在(x)中选择()
-(2) +。->仅在(2)中选择()
(wsd)。->不选择任何内容
(x) ^2+2->仅选择(x)中的()项
sin(x)。->不选择任何内容
(22313)a.->仅在(22313)中选择()
+23-3()/(3x)+(x)。->仅选择()中的()和(x)中的()
sin(x)+3*x^2+(x)+23->仅在(x)中选择()
知道如何不选择括号之间的部分吗
我已经设置了一个regexp测试仪:
Python解决方案将是: x-输入线
重新导入
对于el in re.finditer(r“[此处的正则表达式]”,x):
打印(x[el.start():el.end()])
x=x.replace(x[el.start():el.end()],x[el.start():el.end()]。replace(“(”,”)。replace(“),”)
所以-从你的问题中,我假设你的正则表达式工作正常(如果我错了,请纠正我),如果正则表达式匹配,你只想替换括号
在这种情况下,-finditer将遍历所有匹配的字符串,然后通过以下方式引用找到的每个短语:
x[el.start():el.end()]
-您可以将其替换为固定的(无括号)表单。不要试图一次匹配一个括号,描述整个子字符串并使用可在替换字符串中引用的捕获组:
var result:String = str.replace(/ (^|[^a-z]) \( (\d*|[a-z]) \) /gix, "$1$2");
是的,regExp很好,我正在actionsctipt中编写,希望编写:string.replace(regExp,“”)并删除parthenes…我希望避免在结果中出现循环请在问题中添加您使用的语言或工具的标记。[regex]单是标签太宽了。哇,我不知道一个人能做到这一点-效果很好。谢谢:D