PCRE Regex:排除单词的最后一部分
PCRE Regex: Exclude last portion of word
我正在尝试在 PCRE 中编写一个正则表达式,它捕获单词的第一部分并排除第二部分。第一部分需要容纳不同的值,具体取决于从何处发起交易。这是一个例子:
原始文本:
.controller.CustomerDemographicsController
正则表达式模式尝试:
\.controller\.(?P<Controller>\w+)
尝试实现的结果(在粗体中是我想保存在命名捕获组中的唯一内容):
.controller.CustomerDemographicsController
注意:我试图排除使用 ^
、回顾和展望。
非常感谢任何帮助。
您可以将 Controller 组中的字符匹配到最后一个大写字母:
\.controller\.(?P<Controller>\w+)(?=\p{Lu})
见regex demo。 详情:
\.controller\.
- .controller\.
字符串
(?P<Controller>\w+)
- 命名捕获组“Controller”:一个或多个单词字符尽可能多
(?=\p{Lu})
- 下一个字符必须是大写字母。
请注意,(?=\p{Lu})
使 \w+
在最后一个大写字母之前停止,因为 \w+
模式由于 +
量词而贪婪。
另外,使用
\.controller\.(?P<Controller>[A-Za-z]+)[A-Z]
参见proof。
解释:
--------------------------------------------------------------------------------
\. '.'
--------------------------------------------------------------------------------
controller 'controller'
--------------------------------------------------------------------------------
\. '.'
--------------------------------------------------------------------------------
(?P<Controller> group and capture to Controller:
--------------------------------------------------------------------------------
[A-Za-z]+ any character of: 'A' to 'Z', 'a' to 'z'
(1 or more times (matching the most
amount possible))
--------------------------------------------------------------------------------
) end of Controller group
--------------------------------------------------------------------------------
[A-Z] any character of: 'A' to 'Z'
我正在尝试在 PCRE 中编写一个正则表达式,它捕获单词的第一部分并排除第二部分。第一部分需要容纳不同的值,具体取决于从何处发起交易。这是一个例子:
原始文本:
.controller.CustomerDemographicsController
正则表达式模式尝试:
\.controller\.(?P<Controller>\w+)
尝试实现的结果(在粗体中是我想保存在命名捕获组中的唯一内容):
.controller.CustomerDemographicsController
注意:我试图排除使用 ^
、回顾和展望。
非常感谢任何帮助。
您可以将 Controller 组中的字符匹配到最后一个大写字母:
\.controller\.(?P<Controller>\w+)(?=\p{Lu})
见regex demo。 详情:
\.controller\.
-.controller\.
字符串(?P<Controller>\w+)
- 命名捕获组“Controller”:一个或多个单词字符尽可能多(?=\p{Lu})
- 下一个字符必须是大写字母。
请注意,(?=\p{Lu})
使 \w+
在最后一个大写字母之前停止,因为 \w+
模式由于 +
量词而贪婪。
另外,使用
\.controller\.(?P<Controller>[A-Za-z]+)[A-Z]
参见proof。
解释:
--------------------------------------------------------------------------------
\. '.'
--------------------------------------------------------------------------------
controller 'controller'
--------------------------------------------------------------------------------
\. '.'
--------------------------------------------------------------------------------
(?P<Controller> group and capture to Controller:
--------------------------------------------------------------------------------
[A-Za-z]+ any character of: 'A' to 'Z', 'a' to 'z'
(1 or more times (matching the most
amount possible))
--------------------------------------------------------------------------------
) end of Controller group
--------------------------------------------------------------------------------
[A-Z] any character of: 'A' to 'Z'