【问题标题】:Fetching all names from multiline string从多行字符串中获取所有名称
【发布时间】:2017-11-02 22:31:57
【问题描述】:

我试图从多行字符串和消息正文中获取所有名称(带姓氏),但不知何故它只获取一个名称。

例子:

嗨,马克、斯蒂芬妮·埃尔、保罗

恭喜获得新工作!

我希望你今天早上感觉好多了!

我正在使用的正则表达式:

/(?<=^hi )(\W*(\w+ *\w*)+)*/gmi

据我所知,第一个字幕组应该反复找到尽可能多的名字,但它不是那样工作的!

我用这个正则表达式犯了什么错误?

提前致谢。

【问题讨论】:

    标签: php regex pcre text-extraction


    【解决方案1】:

    不知道为什么要标记PCRE,但可以这样做:

    (?:\G(?!\A)|Hi\s*)
    (?P<name>[A-Z][^,\n\r]+)
    (?:,\h)?
    

    a demo on regex101.com

    【讨论】:

    • 要明确:g 不特定于 javascript,存在于 pcre 中以表达全球研究,但它不存在于 PHP 中,因为为此使用了一种特殊方法:@987654325 @。关于 C#:.net 正则表达式引擎不是基于 pcre。
    • .net 正则表达式引擎!能够有无限的后视,从右到左的搜索,平衡组,但没有递归,没有\K 特征,没有所有格量词(但原子组),没有回溯控制动词。
    • @CasimiretHippolyte:那么,谢谢。已更新答案。
    • 别忘了写下你的模式使用了 x 修饰符。
    • 非常感谢!但是我怎样才能获取另一行作为消息正文?是否可以在一个正则表达式中制作?
    猜你喜欢
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-15
    • 1970-01-01
    • 1970-01-01
    • 2014-01-22
    相关资源
    最近更新 更多