Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何创建一个用括号匹配正则表达式的函数_Regex - Fatal编程技术网

Regex 如何创建一个用括号匹配正则表达式的函数

Regex 如何创建一个用括号匹配正则表达式的函数,regex,Regex,我正在尝试将搜索时使用的用户名与从数据库返回的用户名进行匹配 通常字符串如下所示:“Irene Milvoci(M)”,“Andreas Kjapi(E)”等等 我正试图找到一个正则表达式,它能捕捉我所有的单词,也能捕捉“(E)” 问题是,我只是不想抓住括号里的东西,我也想要括号 根据我的尝试,这个正则表达式将捕获我想要的所有匹配项:([A-Z]\w+)|(\([^]+\)。但当我把它和我的弦“Irene Milvoci(M)”(Irene Milvoci(M)”(Irene Milvoci,M

我正在尝试将搜索时使用的用户名与从数据库返回的用户名进行匹配

通常字符串如下所示:“Irene Milvoci(M)”,“Andreas Kjapi(E)”等等

我正试图找到一个正则表达式,它能捕捉我所有的单词,也能捕捉“(E)”

问题是,我只是不想抓住括号里的东西,我也想要括号

根据我的尝试,这个正则表达式将捕获我想要的所有匹配项:
([A-Z]\w+)|(\([^]+\)
。但当我把它和我的弦“Irene Milvoci(M)”(Irene Milvoci(M)”(Irene Milvoci,M)对抗时,我似乎发疯了

我写错了吗?我觉得它可能是正则表达式中的“|”

假设我有一个来自数据库“Martine Hover(M)”的联系人。我想要电流输出:

  • 马丁尼
  • 盘旋
  • (M)
  • 对我来说,最终的结果是,我想创建一个html元素,返回到我的视图中,它将突出显示与我的搜索词匹配的区域。因此,我将尝试添加
    {firstname}{lastname}{(M)}

    如何:

    ([A-Z]\w+)(?:\s+([A-Z]\w+)(?:\s+(\(\w\)))?)?
    
    应用于
    Martine悬停(M)

    • 第1组包含
      Martine
    • 第2组包含
      悬停
    • 第3组包含
      (M)

    那么:

    ([A-Z]\w+)(?:\s+([A-Z]\w+)(?:\s+(\(\w\)))?)?
    
    应用于
    Martine悬停(M)

    • 第1组包含
      Martine
    • 第2组包含
      悬停
    • 第3组包含
      (M)


    您的意思是要为
    [a-Z]\w+
    找到匹配项,然后匹配可选的
    空格+(…)
    ?尝试
    [A-Z]\w+(?:\s*\([^()]+\)?
    \b[A-Z]\w+(?:\s*\([^()]+\)?
    您的输出期望值是什么?请提供一些反馈。假设我有一个来自数据库的联系人,用户名是“Martine Hover(M)”,我希望当前输出:1.Martin 2.Hover 3.(M)我的最终结果,我想创建一个html元素,返回到我的视图,它将突出显示与我的搜索词匹配的区域。因此,我将尝试添加{firstname}{lastname}{(M)}。很抱歉解释得不好,但我会尽力解释。这听起来是修复数据库设计的好时机。您正在违反规则,这正是您因此而遇到的问题:额外且低效的代码。您的意思是要为
    [a-Z]\w+
    找到匹配项,然后匹配可选的
    空格+(…)
    ?尝试
    [A-Z]\w+(?:\s*\([^()]+\)?
    \b[A-Z]\w+(?:\s*\([^()]+\)?
    您的输出期望值是什么?请提供一些反馈。假设我有一个来自数据库的联系人,用户名是“Martine Hover(M)”,我希望当前输出:1.Martin 2.Hover 3.(M)我的最终结果,我想创建一个html元素,返回到我的视图,它将突出显示与我的搜索词匹配的区域。因此,我将尝试添加{firstname}{lastname}{(M)}。很抱歉解释得不好,但我会尽力解释。这听起来是修复数据库设计的好时机。你违反了规则,这正是你因此而遇到的麻烦:额外且低效的代码。这正是我所需要的!非常感谢!哦,我现在看到,如果少于3个单词,它实际上没有找到任何匹配项。我希望能够匹配Martine Hover为1.Martine 2.Hover,即使(M)不存在。如果我只写名字也是一样的。@AndreasWiggeWigertsson:使组成为可选的,请参阅我的编辑。现在它开始看起来不错了!但是当我写Martine H的时候,仍然存在一个问题。那就根本没有对手了。我想捕获所有类型的单词,我只想将最后一个“(M)”设置在一个组中,这是我以前无法做到的。@AndreasWiggeWigertsson:使非捕获组独立,例如:
    ([a-Z]\w+)(:\s+([a-Z]\w+))(?:\s+(\(\w\)?
    正是我所需要的!非常感谢!哦,我现在看到,如果少于3个单词,它实际上没有找到任何匹配项。我希望能够匹配Martine Hover为1.Martine 2.Hover,即使(M)不存在。如果我只写名字也是一样的。@AndreasWiggeWigertsson:使组成为可选的,请参阅我的编辑。现在它开始看起来不错了!但是当我写Martine H的时候,仍然存在一个问题。那就根本没有对手了。我想捕获所有类型的单词,我只想将最后一个“(M)”设置在一个组中,这是我以前无法设置的。@AndreasWiggeWigertsson:使非捕获组独立,例如:
    ([a-Z]\w+)(:\s+([a-Z]\w+))(?:\s+(\(\w\)?