^Hello,?\s[^,\s]+$
------------------
^ $ : Start and end of string
Hello : Literal Hello
,? : Optional comma
\s : One whitespace
[^,\s]+ : One or more characters that are not comma or space
import re
strings = """Hello, Chopin
Hello Brahms
Hello, Mozart
Hello , name
Hello name
Hello Chopin""".split("\n")
for test in strings:
print(test, re.search(r"^Hello,?\s[^,\s]+$", test))
import re
pattern = r".*Hello, name.*"
# Test the regular expression
if re.match(pattern, "Hello, name"):
print("Match found!")
else:
print("Match not found.")
4条答案
按热度按时间h43kikqp1#
Hello,?\s{1}\S.*
与"Hello , name"
(Hello后的空格)匹配的原因是:Hello
与初始的"Hello"
匹配。\s{1}
匹配"Hello"
后面的空格(请注意,{1}
是冗余的。\s
本身将执行相同的操作,匹配单个空格)\S
与逗号匹配.*
匹配字符串的其余部分,即" name"
要防止出现这种情况,请考虑在名称Try online中禁止使用逗号和空格:
给出:
fcipmucu2#
您可以使用正则表达式
Hello,?\s\S.*
,其解释如下:Hello
:你好,?
:可选逗号\s
:单个空白字符\S
:单个非空格字符.*
:任意字符任意次数Regex demo
acruukt93#
您可以使用负lookahead来防止
,
与\S
匹配。See the demo at regex101-要允许
Hello ,name
,请使用Hello,?\s(?!,\s)\S.*
e7arh2l64#
此正则表达式将匹配字符串“Hello,name”,即使它的前后有其他字符。