正则表达式 - 比赛后只允许空格或什么都不允许

本文关键字:空格 什么 不允许 许空格 正则表达式 | 更新日期: 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)?')[ ]?

添加[ ]?应该可以做到这一点。 ?用于10[ ]只匹配空间。

此外,['s]?适用于所有类型的空格(包括制表符)。

根据我的正则表达式测试器,这似乎可以满足您的需求:

[a-z]*'.?[a-z]*'(("[^"'r'n]*"|[-]?'b'd+['.]?'d*'b)?')([ ]?)(?!.)

如果要允许多个空格,请使用以下命令:

[a-z]*'.?[a-z]*'(("[^"'r'n]*"|[-]?'b'd+['.]?'d*'b)?')([ ]*)(?!.)