我想匹配字符串"->","<==","..."中的任意一个“direction”(">"或"<")。当字符串不包含方向时,我想匹配""。更准确地说,等价的Python表达式是:
"->"
"<=="
"..."
">"
"<"
""
">" if ">" in s else ("<" if "<" in s else "")
我首先提出了这个简单的正则表达式:
re.search(r"[<>]|", s)[0]
...但只要方向不在第一个位置,它就计算为""。你会怎么做
xpcnnkqh1#
Andrej Kesely解决方案的一个简单版本:
re.search('<|>|$', s)[0]
ecfsfe2w2#
如果您需要纯re解决方案(regex101):
re
import re test_cases = [ "->", "<==", "..." ] for t in test_cases: print(re.search('(?=[<>]).|$', t)[0])
图纸:
> <
这将匹配第一个<或>字符串或字符串$的结尾(然后返回空字符串'')编辑:简化了正则表达式,谢谢@InSync
<
>
$
''
rjjhvcjd3#
如果第一个字符不是<或>,则此正则表达式[<>]|返回“”的原因是,在这种情况下,交替始终匹配位置,为www.example.com返回零长度匹配re.search除了编写if/else语句或正则表达式,你还可以使用next(),它可以返回一个默认值,并列出你想要在数组中匹配的字符串:
[<>]|
test_str = "this is a test string with > and <" items = ["<", ">"] item = next((i for i in items if i in test_str), "") print(item)
3条答案
按热度按时间xpcnnkqh1#
Andrej Kesely解决方案的一个简单版本:
ecfsfe2w2#
如果您需要纯
re
解决方案(regex101):图纸:
这将匹配第一个
<
或>
字符串或字符串$
的结尾(然后返回空字符串''
)编辑:简化了正则表达式,谢谢@InSync
rjjhvcjd3#
如果第一个字符不是
<
或>
,则此正则表达式[<>]|
返回“”的原因是,在这种情况下,交替始终匹配位置,为www.example.com返回零长度匹配re.search除了编写if/else语句或正则表达式,你还可以使用next(),它可以返回一个默认值,并列出你想要在数组中匹配的字符串: