嗨,我对这个正则表达式几乎是新手......所以,也许我的问题很容易,但我找不到解决方案!
我正在编写一个正则表达式模式,用于查看用户的书写,并使用另一种颜色绘制已建立的匹配项。 我希望例如用另一种颜色绘画,如果用户写这样的东西:
foo()
问题是,如果用户在此之后写了别的东西,我不想画那个,我的意思是如果用户只写
"foo()" (or "foo() ")
然后没关系,我想画它,但如果用户写
"foo()d"
我不想画那个,因为现在为我写的很好。
我已经编写了与“foo()”相匹配的正则表达式模式(或者中间有一个点,如“foo.foo()”),但我正面临着这个问题。 我需要在我的模式中添加一些只允许空格的东西,或者什么都不添加(如果用户在“)之后写了别的东西”,“我不想匹配它。” 这是我的模式:
[a-z]*\.?[a-z]*\(("[^"\r\n]*"|[-]?\b\d+[\.]?\d*\b)?\)
非常感谢!
答案 0 :(得分:16)
大卫布拉班特很接近,但我认为你真的想尝试用(?!\S)
结束你的正则表达式 - 这意味着你将匹配任何未跟随非空格字符的东西。如果您只想匹配空格而不是空格,请使用(?![^ ])
。
答案 1 :(得分:5)
使用负向前看:
(\w+)(\.*)(\(\))+(\s)*(?!.)
上面的正则表达式中你的重要部分是:(\ s)*(?!。)
(\ s)*:后跟0或更多空格 (?!。):没有其他角色
答案 2 :(得分:0)
[a-z]*\.?[a-z]*\(("[^"\r\n]*"|[-]?\b\d+[\.]?\d*\b)?\)[ ]?
添加[ ]?
应该这样做。 ?
用于1
或0
,[ ]
仅用于匹配空格。
此外,[\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 *:零个或多个空格
%表示:字符串结尾