正则表达式 - 比赛后只允许空格或什么都不允许
本文关键字:空格 什么 不允许 许空格 正则表达式 | 更新日期: 2023-09-27 18:31:35
嗨,我对正则表达式几乎是新手...所以,也许我的问题很容易,但我找不到解决方案!
我正在编写一个正则表达式模式,该模式可以查看用户的写作,并用另一种颜色绘制建立的匹配项。例如,我想用另一种颜色绘画,如果用户写这样的东西:
foo()
问题是我不想描绘如果用户在那之后写了其他东西,我的意思是如果用户只写
"foo()" (or "foo() ")
那就没关系,我想画它,但是如果用户写
"foo()d"
我不想画它,因为现在对我来说写得很好。
我已经编写了与"foo()"匹配的正则表达式模式(或者中间有一个点,如"foo.foo()"),但我面临着这个问题。我需要在我的模式中添加一些只允许空格的东西,或者什么都不允许(如果用户在"我不想匹配它之后写其他东西。这是我的模式:
[a-z]*'.?[a-z]*'(("[^"'r'n]*"|[-]?'b'd+['.]?'d*'b)?')
谢谢!
David Brabant 很接近,但我认为您实际上想尝试以 (?!'S)
结束正则表达式 - 这意味着您将匹配任何不后跟非空格字符的内容。 如果只想匹配空格而不是空格,请使用 (?![^ ])
。
使用负面展望:
('w+)('.*)('('))+('s)*(?!.)
上面的正则表达式中对您来说重要的部分是:(''s)*(?!.)
(''s)* :后跟 0 个或多个空格(?!.):并且没有其他字符
你能尝试添加:
''s*% ?
''s* :零个或多个空格
% 表示:字符串末尾
[a-z]*'.?[a-z]*'(("[^"'r'n]*"|[-]?'b'd+['.]?'d*'b)?')[ ]?
添加[ ]?
应该可以做到这一点。 ?
用于1
或0
,[ ]
只匹配空间。
此外,['s]?
适用于所有类型的空格(包括制表符)。
根据我的正则表达式测试器,这似乎可以满足您的需求:
[a-z]*'.?[a-z]*'(("[^"'r'n]*"|[-]?'b'd+['.]?'d*'b)?')([ ]?)(?!.)
如果要允许多个空格,请使用以下命令:
[a-z]*'.?[a-z]*'(("[^"'r'n]*"|[-]?'b'd+['.]?'d*'b)?')([ ]*)(?!.)