![](/img/trans.png)
[英]Regex to match string which has words followed by whitespace then digits dot or hyphen and words followed by space and then (some info)
[英]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 "
前缀的“右侧的任何内容”的确切问题。
re
builtin 模块(阅读文档)。import re
^Flow Control
的“右边的内容” ( (?P<suffix>.+)$
)。pattern = re.compile(r"^Flow Control (?P<suffix>.+)$")
"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.