抱歉,我对正则表达式缺乏经验
我想去掉字符串中的所有子模式,这些子模式的特点是在单词('hello1')后面有一个数字,或者在单词('hello1,2,3')后面有一系列数字,并将这个模式替换为原来的单词(hello)。
以下是我的文本:
X=‘与1,6-己二醇相互作用,对应于FRAP观察到的固定组分,与此相一致的是,HP 1a的不动组分是通过相separation23产生的。与domain24,25,26的domain24 (1.17 ± 0.25)相比较,在核仁边界处,GFP-纤维蛋白多糖的N&B分析显示出持续高方差区域(2.38 ± 0.46 -mers),而在核仁边界内(1.28 ± 0.36)或外部(1.17 ± 0.25)。
x =re.sub(r'([^ 0-9])(\d+(?:, \d+)*)', r'\1', x)上面,我使用一个正则表达式来消除模式,数字会立即继续使用一个单词,但是它也会产生意想不到的效果:
-hexanediol与观察到的固定组分相对应。与此相一致的是,HP 1a的不动分数.自己通过相分离而产生。N&B分析GFP\xe2_2\x80\x93fiillarin强调区域持续高方差(.\xe2\x80\x89\xc2\xb1\xe2\x80\x89 )。( -mers)在核仁边界,与内部(.\xe2\x80\x89\xc2\xb1\xe2\x80\x89.)或外部(.\xe2\x80\x89\xc2\xb1\xe2\x80\x89.)域。同样,GFP\xe2\x80\x93HP 1a显示出更大的方差。
预期产出如下:
X=‘与1,6-己二醇相互作用,对应于FRAP观察到的固定组分,与此相一致的是,HP 1a的固定组分是通过相分离产生的,GFP-纤维蛋白原在核仁边界的N&B分析强调了核仁边界上的高方差区域(2.38 ± 0.46 ),而在核仁边界内(1.28 ± 0.36)或区带外(1.17 ± 0.25),GFP-HP 1a的变异增加。
“1,6-己二醇”、“1.28 ± 0.36”和“HP 1a”等模式不移除数字。
更新:
该表达式似乎无法完全消除包含连字符的模式(例如,word11 11-12)。
x='than allelic variant and define eQTLs9–11'
x = re.sub(r"(?<=\w)\d+(?:, \d+)*", "", x)结果:
而不是等位基因变异体并定义eQTLs 1。
预期产出:
而不是等位基因变异体和定义eQTL
有人能帮我做到这一点吗?
发布于 2017-06-22 20:06:03
x = re.sub(r"(?<=\w)\d+(?:, \d+)*", "", x)解释
(?<=...)是一个积极的背景。它基本上是说,“确保这是在这里,但实际上没有匹配”。如果需要,还可以将其替换为普通组,并在替换中使用\1。
\w与"word“字符匹配。这通常等同于[a-zA-Z_]。
\d+匹配一个数字。
(?:, \d+)*匹配一个逗号,一个空格,后面跟着一个数字,0次或更多次。
https://stackoverflow.com/questions/44708153
复制相似问题