Python / 正则表达式:排除除一项以外的所有内容

2 投票
4 回答
1681 浏览
提问于 2025-04-15 18:47

假设我有这些字符串:

a = "hello"
b = "-hello"
c = "-"
d = "hell-o"
e = "    - "

我怎么才能只匹配到 -(字符串 C)呢?我试过用 if "-" in something,但显然这样不对。有人能给我点建议吗?


假设我们把这些字符串放到一个列表里,然后循环遍历,我只想提取出 C。我该怎么做呢?

for aa in list1:
    if not re.findall('[^-$]'):
        print aa

这样做会不会太麻烦了?

4 个回答

0

如果你想做的事情是去掉短横线(比如说 he-llo 变成 hello),那么这更适合用生成器表达式来处理。

''.join((char for char in 'he-llo' if char != '-'))
1

这个正则表达式是“^-$”。

4

如果你只想匹配变量 c

if '-' == something:
   print 'hurray!'

关于更新的回答:是的,那样会太复杂。你在这里不需要用正则表达式。简单的字符串方法会更快:

>>> lst =["hello", "-hello", "-", "hell-o","    - "]
>>> for i, item in enumerate(lst):
    if item == '-':
        print(i, item)


2 -

撰写回答