正则表达式以排除后跟空格的单词

2024-04-29 19:27:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试了很多解决方案,但无法让这个正则表达式工作

弦- “流量控制无”

我想排除“流控制”加上空白,只返回右边的任何东西。


Tags: 解决方案空白流量流控制
3条回答

像这样使用split

my_str = 'Flow Control None'
out_str = my_str.split()[-1]
# 'None'

或使用re.findall

import re
out_str = re.findall(r'^.*\s(\S+)$', my_str)[0]

因为您已经用#python#regex标记了您的问题,所以我将使用这些工具概述您的问题的简单解决方案。此外,另外两个答案并没有真正解决匹配"Flow Control "前缀的“右边的任何东西”的确切问题

  1. 首先,从导入re内置模块(read the docs)开始
import re
  1. 定义要匹配的模式。在这里,我们匹配的是^Flow Control “右边的任何东西”(?P<suffix>.+)$
pattern = re.compile(r"^Flow Control (?P<suffix>.+)$")
  1. 获取给定字符串的匹配项(例如"Flow Control None"
suffix = pattern.search("Flow Control None").group("suffix")
print(suffix)  # Out: None

希望这个完整的工作示例也能帮助您

import re


def get_suffix(text: str):
    pattern = re.compile(r"^Flow Control (?P<suffix>.+)$")
    matches = pattern.search(text)
    return matches.group("suffix") if matches else None


examples = [
    "Flow Control None",
    "Flow Control None None",
    "Flow Control  None",
    "Flow Control ",
]

for example in examples:
    suffix = get_suffix(text=example)
    if suffix:
        print(f"Matched: {repr(suffix)}")
    else:
        print(f"No matches for: {repr(example)}")

如果您真的想要纯正则表达式解决方案,请尝试以下方法:(?<= )[a-zA-Z]*$

(?<= )与单个“”匹配,但未将其包括在匹配中[a-zA-Z]*多次匹配从a到z或a到z的任何内容$匹配行的结尾

如果要确保匹配项至少有一个字母,也可以尝试将*替换为+(如果字符串以空格结尾,+将不匹配,则*将生成0长度匹配)

但这样做可能更清楚

data = "Flow Control None"
split = data.split(' ')
split[len(split) - 1] # returns "None"

EDITdata.split(' ')[-1]还返回"None"

data[data.rfind(' ') + 1:] # returns "None"

这根本不涉及正则表达式

相关问题 更多 >