使用正则表达式从方括号返回第一个单词

时间:2018-04-24 05:59:42

标签: python regex

我有一个包含

的文件
[[ abstraction, verb.cognition:abstract,+ ]] 

我想删除方括号,并希望在此括号中保留单词abstraction。所以输出应该是 -

abstraction

我试过了 -

import re

with open('test.txt','r') as f:
    for line in f:
        rx = re.compile(r'\[[^][]*]')  string
        while rx.search(line):
            line = rx.sub('',line)                     
            s = line.strip()
            print(s)

只显示[]方括号。是否有办法执行此操作?请帮忙 。

3 个答案:

答案 0 :(得分:1)

使用re.search

<强>实施例

s = "[[ abstraction, verb.cognition:abstract,+ ]]"
m = re.search("\[\[(.*?)\,.*", s)
if m:
    print(m.group(1))

<强>输出:

 abstraction

答案 1 :(得分:1)

你甚至不用担心括号,如果你的文件只包含那个,你只需要匹配第一个单词。

import re
t = "[[ abstraction, verb.cognition:abstract,+ ]] "

match = re.search(r"\b([^,]+)\b", t)
# prints False when no match is found
print(match is not None and match.group(0))
# abstraction

答案 2 :(得分:1)

你也可以试试这个,

line="""[[ abstraction, verb.cognition:abstract,+ ]] rewq [[ abs, verb.cognition:abstract,+ ]] fdsaf [[ abstraction, verb.cfdsa,+ ]] """
rx = re.compile(r'\[\[[^][]*]]')
line = rx.sub(lambda m: '' if m.group(0).find("abstraction")== -1 else "abstraction", line)                     
s = line.strip()
print(s)

输出

abstraction rewq  fdsaf abstraction