更换使用正则表达式蟒蛇
问题描述:
我有一句话是这样更换使用正则表达式蟒蛇
s = " zero/NN divided/VBD by/IN anything/NN is zero/NN"
我需要的标签,以取代所有的话,只是标签。输出应该是
s = "NN VBD IN NN is NN"
我使用正则表达式替换试过这样
tup = re.sub(r"\s*/$" , "", s)
但这不是给我正确的输出。请帮忙
答
这给你想要的输出:
tup = re.sub(r"\b\w+/" , "", s)
\b
是匹配一个单词边界,随后\w+
至少一个字字符(a-zA-Z0-9_
)和至少斜线。
答
\s
字符组匹配所有空白字符,这似乎不是你想要的。我想你想要另一种情况,所有非空白字符。您还可以在什么是标签,例如更具体:
tup = re.sub(r"\S+/([A-Z]+)" , r"\1", s)
这将替换所有的非空白字符,然后是斜线,然后用刚大写字母大写字母序列。
答
尝试:
tup = re.sub(r"[a-z]*/" , "", s)
In [1]: s = " zero/NN divided/VBD by/IN anything/NN is zero/NN"
In [2]: tup = re.sub(r"[a-z]*/" , "", s)
In [3]: print tup
NN VBD IN NN is NN
+0
这与第一个答案几乎相同,但可以修改为[A-z]以更改大写字母。 – dheeraj 2012-02-05 06:54:07
答
tup = re.sub(r"\b\w+/(\w+)\b", r"\1", s)
在我的正则表达式的两边是\ b,意思是 “单词边界”,然后对 “/” 我有\ W +意为 “单词字符” 两侧。在右边,我们把它们放在圆括号中。
第二个表达式r“\ 1”表示。 “第一组”,它将这些东西放在括号内。
这个作品相当不错!非常感谢 !! – dheeraj 2012-02-05 06:53:10