简体   繁体   English

Javascript正则表达式分组问题

[英]Javascript regex grouping question

I want to be able to detect/pick apart strings like : 我希望能够检测/拾取像这样的字符串:

tickets at entrance per person 每人入口门票
ballons pp 气球pp
tree planting 植树

ie a description followed by an optional "pp" or "per person" 即描述,后跟可选的“ pp”或“每人”

I try (.+)\\s+(per person|pp) and that works; 我尝试(.+)\\s+(per person|pp) ,这行得通; but the pp|per person suffix is then not optional. 但是pp|per person后缀不是可选的。

I try (.+)\\s+(per person|pp)? 我尝试(.+)\\s+(per person|pp)? or (.+)\\s+(per person|pp){0,1} to make it optional, but then I get "undefined for the second capture group". (.+)\\s+(per person|pp){0,1}将其设为可选,但随后我得到“对于第二个捕获组未定义”。 Curiously the first capture group contains the "per": 奇怪的是,第一个捕获组包含“ per”:

matches: 0: (tickets at entrance per ) 匹配:0 :(每个入口的门票)
1: (tickets at entrance per) 1 :(每张门票)
2: (undefined) 2 :(未定义)

(tested via http://www.regextester.com/ online regex tester) (通过http://www.regextester.com/在线regex测试仪进行了测试)

What am I doing wrong with that second capture group ? 第二个捕获组我在做什么错?

You can try this : 您可以尝试以下方法:

^(.+?)\s*(per person|pp|)$

You can read it like this : 您可以这样阅读:

Starts with  
 (any characters but at least one and not in greedy mode)
 any space-characters
 ("per person" or "pp" or nothing)
end

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM