我有我的正则表达式/'(.*)(?:(?:'\s*,\s*)|(?:'\)))/
和我的测试代码('He said, "You're cool."' , 'Rawr')
(我的测试代码会模拟参数传递给函数。)
我会解释我的正则表达式按照我的理解,希望你们几个可以阐明我的问题。
1)/'
意味着在匹配字符串的开头,需要有'
2)(.*)
装置捕获的任何字符以外\n
0次或多次
3)(?:(?:4)|(?:5))
装置不捕获但尽量执行步骤4,如果它不工作,尝试第5步
4)(?:'\s*,\s*)
手段不捕获,但需要有一个'
0或多个空格字符,随后是,
有0个或多个空白字符
5)(?:'\))
手段不捕获,但需要有')
如此看来,它应该返回这个(这就是我想要的):
'
+ He said, "You're cool."
+ ' ,
但它返回:
'
+ He said, "You're cool."' , 'Rawr
+ ')
如果我改变我的测试代码('He said, "You're cool."' , 'Rawr'
(没有结束括号),它返回我想要的东西,但只要我补充一点,最后一个小括号,然后好像是我的OR操作为所欲为就是了。如果有逗号,我希望它先测试,如果有逗号,并且如果没有一个括号的检查,那么就打破它。
我试过切换第4步和第5步的点,但OR运算符似乎始终默认为(?:'\))
一侧。 我怎样才能匹配尽可能最短的金额?RegExp - 我怎样才能匹配尽可能最短的金额?
8
A
回答
15
我不认为你的问题是OR运算符,而是greediness的.*
。它会匹配你的完整字符串,然后返回 -track直到下列表达式匹配。在这个回溯过程中的第一场比赛将是'He said, "You're cool."' , 'Rawr
+ ')
。改为尝试.*?
!
相关问题
- 1. regmatch_t我怎样才能得到匹配?
- 2. 我怎样才能金额/组通过此表的结果
- 3. 我怎样才能缩短这一点?
- 4. 我怎样才能
- 5. 我怎样才能
- 6. 我怎样才能
- 7. 我怎样才能
- 8. REGEXP使用egrep匹配美元金额
- 9. 匹配尽可能少(贪婪样)
- 10. çregex.h可能的最短匹配
- 11. 我怎样才能的MSBuild
- 12. 我怎样才能让在装配
- 13. 我怎样才能匹配的模式如下
- 14. 我怎样才能获得RegEx的所有匹配?
- 15. 怎样才能
- 16. 我怎样才能通过数组grep,而过滤出匹配?
- 17. 我怎样才能做一个“加入”在匹配数据
- 18. 我怎样才能在Ionic2
- 19. 我怎样才能在Zebble
- 20. 我怎样才能在PreferenceScreen
- 21. 我怎样才能在vim
- 22. 我怎样才能绕UIView
- 23. 我怎样才能标签
- 24. 我怎样才能在图
- 25. 我怎样才能在Python
- 26. 我怎样才能event_search_max?
- 27. 我怎样才能在VB.net
- 28. 我怎样才能从URL
- 29. 我怎样才能在DB2
- 30. 我怎样才能在Java
字符串的开头将是'/ ^',而不是'/',fwiw。就我个人而言,我不相信我会使用正则表达式来表达你想要做的事情,而是一个小的解析器。令人困惑的正则表达式令人困惑。 –
@DaveNewton - 是的,我知道。这就是为什么我在匹配的字符串开头说的原因。也许我应该在字符串的匹配部分的开始处说。或者当它开始比赛时,它需要以''开始。 – Aust