【问题标题】:Regex to match string literal with newline and carriage return正则表达式将字符串文字与换行符和回车匹配
【发布时间】:2015-08-14 15:10:18
【问题描述】:

我在将字符串文字与换行符(\n) 和回车符(\r) 匹配时遇到了困难。 例如:

"132 Holt Court, Cashtown, Rhode Island, 7680 \n\r"

我试过的是

\"([^\\\"]|\\.)*\"

但是这个正则表达式只能匹配上面没有\r的字符串。谁能帮我解决这个问题?

谢谢。

【问题讨论】:

  • 您可能需要记住默认值为\r\n 而不是\n\r。见stackoverflow.com/questions/6539801/reminder-r-n-or-n-r
  • 你想精确匹配什么?正则表达式将不匹配任何内容,因为它正在寻找",然后是不是". 的任何内容(这没有意义,因为它已经被[^"] 覆盖),然后是@987654332 @.
  • 你能显示你实际匹配的代码和字符串吗?你从哪里得到文字,你确定它里面实际上是一个斜线,后面跟着一个r,或者它恰好是一个实际的\u000D(回车)?
  • 我正在尝试匹配字符串文字,以" 开头和结尾,包含转义字符\\. 或除\ 和" 之外的任何字符。
  • 代码只是那个正则表达式。这不是一个有效的 Java 程序。我将投票结束这个问题,questions asking for debugging help on StackOverflow must include the code necessary to reproduce the problem

标签: regex jflex


【解决方案1】:

您总是可以在检查前先删除它们。

例如:

String s = "132 Holt Court, Cashtown, Rhode Island, 7680 \n\r"
s=s.replace("\\n\\r","\\n");

【讨论】:

  • 我想匹配这样的字符串文字,而不是删除\n, \r
猜你喜欢
  • 1970-01-01
  • 2022-01-17
  • 1970-01-01
  • 2019-05-01
  • 2013-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多