如何从ruby上的以下regexp中删除引号?
我有以下正则表达式:如何从ruby上的以下regexp中删除引号?,ruby,regex,Ruby,Regex,我有以下正则表达式: /["]*(?<name>.*)[\"]*?\s*[<(](?<email>\w.*)[>)]/.match("\"The Boss\" <daboss@aol.com>") 我怎样才能摆脱老板的最后一句话 请随意重构我的正则表达式,使其更具意义…您可能不想在名称中使用引号。这将修复您的示例: /["]*(?<name>[^"]*)[\"]*?\s*[<(](?<email>\w.*)[>
/["]*(?<name>.*)[\"]*?\s*[<(](?<email>\w.*)[>)]/.match("\"The Boss\" <daboss@aol.com>")
我怎样才能摆脱老板的最后一句话
请随意重构我的正则表达式,使其更具意义…您可能不想在名称中使用引号。这将修复您的示例:
/["]*(?<name>[^"]*)[\"]*?\s*[<(](?<email>\w.*)[>)]/.match("\"The Boss\" <daboss@aol.com>")
/[“]*(?[^”]*)[\“]*?\s*[)]/.match(“\”老板“)
如果你想支持反斜杠转义,你需要更复杂的东西。问题是(?)
是*
,它会吃掉任何东西,包括双引号。一个简单的修复方法是将其更改为*?
。(这是一个不情愿的匹配器;它匹配尽可能少的字符,而不是尽可能多的字符。)
另一种方法是使用[^”]*
而不是*
这里有一个关于regexp的重要教训:无论何时编写regexp,不要只考虑要匹配的内容;要考虑不想匹配的内容。regexp的一个常见错误源是匹配太多
/["]*(?<name>[^"]*)[\"]*?\s*[<(](?<email>\w.*)[>)]/.match("\"The Boss\" <daboss@aol.com>")