繁体   English   中英

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

[英]Regex to exclude words followed by space

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

字符串-“无流量控制”

我想排除“流控制”加上空格,只返回右边的内容。

如果你真的想要一个纯粹的正则表达式解决方案试试这个: (?<= )[a-zA-Z]*$

(?<= )匹配单个 ' ' 但不将其包含在匹配中。 [a-zA-Z]*匹配从 a 到 z 或 A 到 Z 任意次数的任何内容。 $匹配行尾。

如果您想确保匹配至少有一个字母,您也可以尝试用+替换* (如果您的字符串以空格结尾, *将产生 0 长度的匹配, +将不匹配任何内容)。

但做类似的事情可能更清楚

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

EDIT data.split(' ')[-1]也返回"None"
或者

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

根本不涉及正则表达式。

像这样使用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 builtin 模块(阅读文档)。
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)}")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM