带有大约2000(texthere)括号的xml文件。我需要删除其中的括号和文本。我试过但收到错误:(
DECLARE @d DATE = '20150924'
SELECT CASE WHEN DAY(@d) < 20
THEN DATEADD(mm, 1, DATEADD(dd, -DAY(@d) + 1, @d))
ELSE DATEADD(mm, 2, DATEADD(dd, -DAY(@d) + 1, @d)) END;
和我的错误:
import re, sys
fileName = (sys.argv[2])
with open(fileName) as f:
input = f.read()
output = re.sub(r'\(\w*\)', '', input)
print fileName + " cleaned of all parenthesis"
我更改了(sys.argv [1])...我没有错误但是我的file.xml中的括号也没有被删除?
答案 0 :(得分:1)
你有嵌套的parens吗?
stuff (words (inside (other) words) eww)
你会有多组parens吗?
stuff (first group) stuff (second group)
parens中的文字是否有空格?
stuff (single_word)
stuff (multiple words)
一个简单的正则表达式可能是\(.*?\)
,尽管你会看到嵌套的parens没有被捕获(如果你不期望嵌套的parens那就没问题):
https://regex101.com/r/kB2lU1/1
修改强>
https://regex101.com/r/kB2lU1/2可能能够处理其中一些嵌套的parens,但仍可能会因不同类型的边缘情况而中断。
您需要指定您期望的边缘情况,以便根据您的需求更好地定制答案。
答案 1 :(得分:1)
由于您按以下方式调用脚本:
python removeparenthesis.py filename.xml
XML文件名将显示在sys.argv[1]
下。
此外,您需要在模式中使用延迟匹配:
r'\(\w*?\)' # notice the ?
更好的模式是:
r'\([^)]*\)'