【问题标题】:Ruby Reg Ex Identify Pipe Within QuotesRuby Regex 识别引号内的管道
【发布时间】:2014-10-15 17:05:58
【问题描述】:

我想要一个正则表达式来识别双引号内的管道字符。

我正在使用

\".+\|.+\" 

正确匹配 '1|Some "quote | text"|4' 并且在 '1|Some "quoted" text|4' 上正确不匹配

但是,它也匹配“1|一些“引用”文本|4|5|6|更多“引用”文本|9' 因为有 2 组引号 - 它看到最外面的引号和之间的管道。

在这种情况下如何将正则表达式更改为不匹配?

更新:原来我需要它来匹配引号内的多个管道。我一直在使用:

/\"([^|]+)\|([^|]+)\"/

适用于引号内的 1 个管道,例如 "1|Some "quote | text"|4",但现在我需要它来匹配类似 "1|Some "quote |正文 |与 |管道“|4”。

有什么想法吗???

【问题讨论】:

  • 你的引号也可以分隔吗?例如:"A \"quoted\" string"
  • 我敢打赌你正在处理管道分隔的 csv。 Ruby 有一个 CSV 类。

标签: ruby regex


【解决方案1】:

您希望匹配除| 之外的任何字符,而不是使用匹配任何字符的.+。为此,您需要[^|]+。根据你写的,这应该是你想要的。

【讨论】:

  • 甚至没有关闭。这将无法识别 | 是在引号内还是引号外。
  • 这个想法是将他对.+ 的调用替换为[^|]+。我认为从答案中可以清楚地看出这一点。他的正则表达式的其余部分都很好。
  • 不,这不是因为它无法识别它是在双引号之内还是之外。
猜你喜欢
  • 2013-10-31
  • 2020-12-06
  • 2018-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多