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

问题描述:

嗨我几乎是新的正则表达式...所以,也许我的问题很简单,但我找不到解决方案!正则表达式 - 匹配后只允许空格或空格

我正在写一个正则表达式模式,用于查看用户的写作,并用另一种颜色绘制所创建的匹配。 我想例如用另一种颜色绘制,如果用户写的是这样的:

foo() 

的事情是,我不想画,如果用户以后写入别的东西,我的意思是,如果用户只写

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

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

"foo()d" 

我不想油漆,因为现在写得很好 为了我。

我已经写了匹配“foo()”(或者也带有一个点在中间,如“foo.foo()”)的正则表达式模式,但我面对的是这个问题。 我需要的东西添加到我的模式只允许一个空间,或没有(如果用户写的东西后,否则“)”我不想与之相匹配的) 这是我的模式:

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

非常感谢!

+1

这并不完全清楚你在问什么。这之后有没有人物?如果没有,你可以用'\ s?$'结束你的正则表达式。 – 2012-04-18 15:01:10

+0

没错,这是行不通的,因为我想让用户继续写... – gezequiel 2012-04-18 15:11:58

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

+0

由于您是Regex的新手,您可能还不知道^和$符号。他们是线路锚。例如,如果你的正则表达式是“^ foo()[]?$”,它将匹配整个行的“foo()”和“foo()”。 – Scen 2012-04-18 16:10:40

+0

是的,我知道这些符号,但它不适用于我的情况... – gezequiel 2012-04-18 17:09:38

[AZ] [AZ](( “[^” \ r \ n]的“?| - [。]?[] \ B \ d + \ d \ B))。?[] ?

添加[]?应该这样做。?用于1或0,[]将只匹配空间。

此外,[\ S]?会工作为所有类型的空白(包括标签。)

+0

这不行,好像下一个字符不是白色空格,它会匹配空格零次。我认为gezequiel想要失败,如果他匹配'\ S',即非空白字符。 – 2012-04-18 14:59:40

+0

啊谢谢阿德,应该更彻底地阅读这个问题。 – Scen 2012-04-18 16:07:05

这似乎是你在找什么,根据我的正则表达式测试仪:

在正则表达式以上

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

的重要组成部分,为您的是::0

如果你想允许一个以上的空间,使用此:提前

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

使用负的样子(\ S)*()

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

+0

这太棒了!谢谢! – gezequiel 2012-04-18 15:12:34

+0

+1:很好的答案!完美的作品。 – 2012-04-18 15:23:30

+0

@gezequiel:查看我以前的评论。你需要做一点小小的调整。 – 2012-04-18 15:28:10

您可以尝试添加:

\ s *%?

\ S *:零或多个空格

%表示:字符串的结尾