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

时间:2012-04-18 14:42:13

标签: c# regex

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

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

foo()

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

"foo()" (or "foo() ")

然后没关系,我想画它,但如果用户写

"foo()d" 

我不想画那个,因为现在为我写的很好。

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

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

非常感谢!

5 个答案:

答案 0 :(得分:16)

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

答案 1 :(得分:5)

使用负向前看:

(\w+)(\.*)(\(\))+(\s)*(?!.)

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

(\ s)*:后跟0或更多空格 (?!。):没有其他角色

答案 2 :(得分:0)

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

添加[ ]?应该这样做。 ?用于10[ ]仅用于匹配空格。

此外,[\s]?适用于所有类型的空白(包括标签)。

答案 3 :(得分:0)

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

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

如果您想允许多个空格,请使用:

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

答案 4 :(得分:0)

你能尝试添加:

\ s *%?

\ s *:零个或多个空格

%表示:字符串结尾