gpt4 book ai didi

php - 捕获行尾字符串,但避免捕获匹配的尾随字符

转载 作者:行者123 更新时间:2023-12-02 20:35:45 30 4
gpt4 key购买 nike

我或多或少有以下几行:

$strings = [
"Concepto de la transferencia Un concepto uno ",
"Concepto traspaso Orden #121231",
"Concepto trasnferencia 121231 Magical Concept ",
]

并具有以下正则表达式:

|Concepto\s+(?>de la )?(?>tr.+erencia|traspaso)\s+(?P<concepto>.+)$|

它很好地捕获了每个字符串的结尾部分:

  "Un concepto uno        "
"Orden #121231"
"121231 Magical Concept "

(包括尾随空格)。但我希望匹配排除尾随空格(如果存在)。结果是:

  "Un concepto uno"
"Orden #121231"
"121231 Magical Concept"

我已经尝试过:

Concepto\s+(?>de la )?(?>tr.+erencia|traspaso)\s+(?P<concepto>.+)(?>\s+)?$

Concepto\s+(?>de la )?(?>tr.+erencia|traspaso)\s+(?P<concepto>.+)\s*$

但显然这两种方法都不起作用。无法制作内联修饰符,例如(U) 为 concepto 小组工作。

而且我知道我不能只是修剪结果匹配并完成它。只是想让这个正则表达式起作用。 :)

最佳答案

那么,将最后一个 .+ 变成 .+? (使用惰性量词)并在 $ 之前添加 \s* :

Concepto\s+(?>de la )?(?>tr.+erencia|traspaso)\s+(?P<concepto>.+?)\s*$
^ ^^^

请参阅regex demo

如果“concepto”组可以为空,请将 .+? 替换为 .*?。由于 *?/+? 是惰性的,因此将首先测试 \s*,因此所有尾随空白符号都将在外部“概念”组。

此外,此处的原子组 ((?>)) 可以替换为纯粹的非捕获 ((?:)) 组。

关于php - 捕获行尾字符串,但避免捕获匹配的尾随字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41875348/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com