415-555-1234
650-555-2345
(416)555-3456
202 555 4567
4035555678
1 416 555 9292
对于我的正则表达式课程,我正在尝试捕获上述数字的区号。现在我得到了下面匹配所有数字的表达式,但是我的第一对括号没有捕获任何内容。
1?\s?\\(?(\d{3})\s?-?\\)?(\d{3})\s?-?(\d{4})
我是否以某种方式将它们转换为非捕获组?怎么修?
RegexOne.com 刚刚跑掉,让我一个人在这个网站上。
415-555-1234
650-555-2345
(416)555-3456
202 555 4567
4035555678
1 416 555 9292
对于我的正则表达式课程,我正在尝试捕获上述数字的区号。现在我得到了下面匹配所有数字的表达式,但是我的第一对括号没有捕获任何内容。
1?\s?\\(?(\d{3})\s?-?\\)?(\d{3})\s?-?(\d{4})
我是否以某种方式将它们转换为非捕获组?怎么修?
RegexOne.com 刚刚跑掉,让我一个人在这个网站上。
使用[(]and[)]来避免反斜杠和可能的双反斜杠(因为转义)并检查这是否解决了您的问题。
否则,您的正则表达式看起来不错,(\d{3})应该匹配并捕获前 3 位数字。
在问题中,请说明您使用的是哪种主机编程语言。可能存在与语言相关的反斜杠转义问题。一般的经验法则是在您的正则表达式中始终使用单个反斜杠(例如在 Perl \(、\dRuby、JavaScript 中)或双反斜杠(例如在 Java\\(和\\dC++ 中)。
此正则表达式适用于http://regexone.com/example/1
1?\s?\(?(\d{3})\s?-?\)?\d{3}\s?-?\d{4}
我做了什么来修复它。