正则表达式可以实现吗?

前端之家收集整理的这篇文章主要介绍了正则表达式可以实现吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
是否可以使用与以下内容匹配的正则表达式匹配器:
我需要知道是否存在匹配括号内部和外部的子字符串,格式为(@ …)

匹配的例子:

> abc(@ abc)
> abc(@(& abc))
> abc(& def(@ abc))
>(&(& abc def)(@ abc))
>(& def(& abc)(@ abc))

不匹配的例子:

> abc
>(@ abc)
> abc(@ def)
> abc(& abc)

编辑:
这是检查正则表达式的rspec规范.只有2次测试失败:

“(@ abc)abc”应该匹配

“(@ abc)(@ abc)”不应该匹配

describe "regex" do

  let(:regex) { /(.+).*\(@.*\1.*\)/ }

  matches = ["abc (@ abc )","(@ abc ) abc","abc (@ (& abc ) )","abc (@ (& abc ) )"]
  no_matches = ["abc","(@ abc )","abc def","abc abc","abc (& abc)","(@ abc ) (@ abc)"]

  matches.each do |flow|
    it "should match '#{flow}'" do
      flow.should match regex
    end
  end

  no_matches.each do |flow|
    it "should not match '#{flow}'" do
      flow.should_not match regex
    end
  end

end

解决方法

尝试使用正则表达式模式

/(?=.*?(?<!@ )(\b\w+\b)).*\(@.*\1.*\)/

this test code.

猜你在找的正则表达式相关文章