后不匹配的号码我有以下几点:正则表达式连字符
1.5 5 tablespoon cream
½ (1 cup) heavy cream
¼ – ½ teaspoon cream
1 tablespoon cream
^(?:[\-\.\/\s]*[\d↉½⅓⅔¼¾⅕⅖⅗⅘⅙⅚⅐⅛⅜⅝⅞⅑⅒⅟])+
我想为什么¼ – ½
不匹配弄清楚,我有非捕获组内逃脱连字符。
我已经试过:
^(?:[\-\.\/\s\W]*[\d↉½⅓⅔¼¾⅕⅖⅗⅘⅙⅚⅐⅛⅜⅝⅞⅑⅒⅟])+
但它相匹配的½ (1
,我只想一切,只要它包含了点,连字符和空格。
负前瞻与标签非字字符的\W
,它捕获正是我试图实现,但负前瞻不会阻止1 (1
被捕获,这里是我的尝试:^(?:[\-\.\/\s\W]*(?!\()*[\d↉½⅓⅔¼¾⅕⅖⅗⅘⅙⅚⅐⅛⅜⅝⅞⅑⅒⅟])+
https://regex101.com/r/bITQ4F/2
所以我认为有一个破折号(Dash标点符号)的Unicode字符类,如果C++是一个选项:http://www.boost.org/doc/libs/1_58_0/libs/regex/doc/html/boost_regex /syntax/character_classes/optional_char_class_names.html – BurnsBA
Whaaaat ..无语!这将花费我一百万年,甚至开始怀疑格伦,你的答案是我的泰诺。 – Craig
@BurnsBA是,它是'\ p {Pd}'。我用这个替代方案更新了答案。感谢提醒我它存在。 – Bohemian