正则表达式 - 匹配后只允许空格或空格

gez*_*iel 17 c# regex

嗨,我对这个正则表达式几乎是新的...所以,也许我的问题很容易,但我找不到解决方案!

我正在编写一个正则表达式模式,用于查看用户的书写,并使用另一种颜色绘制已建立的匹配项.我希望例如用另一种颜色绘画,如果用户写这样的东西:

foo()
Run Code Online (Sandbox Code Playgroud)

问题是,如果用户在此之后写了别的东西,我不想画那个,我的意思是如果用户只写

"foo()" (or "foo() ")
Run Code Online (Sandbox Code Playgroud)

那很好,我想画它,但如果用户写

"foo()d" 
Run Code Online (Sandbox Code Playgroud)

我不想画那个,因为现在我写得很好.

我已经编写了与"foo()"匹配的正则表达式模式(或者中间有一个点,如"foo.foo()"),但我正面临着这个问题.我需要在我的模式中添加一些东西,只允许一个空格,或者什么都没有(如果用户在")之后写了别的东西","我不想匹配它."这是我的模式:

[a-z]*\.?[a-z]*\(("[^"\r\n]*"|[-]?\b\d+[\.]?\d*\b)?\)
Run Code Online (Sandbox Code Playgroud)

非常感谢你!

Ade*_*ger 16

大卫布拉班特很接近,但我认为你真的想尝试结束你的正则表达式(?!\S)- 这意味着你将匹配任何没有后跟非空白字符的东西.如果您只想匹配空格而不是空格,请使用(?![^ ]).


Dav*_*ant 6

使用负向前看:

(\w+)(\.*)(\(\))+(\s)*(?!.)
Run Code Online (Sandbox Code Playgroud)

上面的正则表达式中你的重要部分是:(\ s)*(?!.)

(\ s)*:后跟0或更多空格(?!.):并且没有其他字符