嘿伙计们我已经和这个人一起工作了一会儿。我似乎无法得到它。
这是我到目前为止所拥有的
(@[^{2,}+)([^(\s\W\d{2}]+)(\b)
http://rubular.com/r/zlx3j00Wjl
虽然这不是比赛时期。
我基本上需要匹配这个。
@的 function.name (PARAM)
我只需要匹配 function.name 。这样做。
http://rubular.com/r/hWMB72LsWT
我不想匹配此
@@ function.name(PARAM)
你好@@ test.com`
不知道是否有人有任何想法。谢谢你的帮助。
答案 0 :(得分:3)
您可以使用否定前瞻:@(?!@)
匹配@
,而不是其他@
。
答案 1 :(得分:1)
试试这个:
(?:^|\s)@+([^(]+)
第一组中的function.match
和function.name
将与hello@@test.com
不匹配。 Rubular:
答案 2 :(得分:1)
试试这个
(?!.*@@)^@([^()\s]+)\b
@
(?!.*@@)
是negative lookahead assertion。如果它在字符串中找到连续两个@
个字符的任何位置,它将失败。我不确定你的要求,如果一直有一组括号,那么你不需要你的单词边界。如果可能有类似的字符串没有您不想匹配的括号,那么我会添加另一个前瞻以确保这个断言:
?!.*@@)^@([^()\s]+)(?=\()
答案 3 :(得分:1)
我在这里(here it is on Rubular):
(?<!@)@(\w+(?:\.\w+)*)\([^)]*\)
说明:
(?<!@)@ # an '@' not preceded by an '@'
(\w+(?:\.\w+)*) # any number of xxx.xxx.xxx, captured into a group
\([^)]*\) # brackets, containing anything that isn't a closing bracket
由于这是Ruby,您可能不关心匹配括号。在这种情况下,您可以删除最后一部分。