【问题标题】:RegEx: Match odd amount of repeat between other characters in each line正则表达式:匹配每行中其他字符之间的奇数重复次数
【发布时间】:2014-04-16 21:19:32
【问题描述】:

我想知道如何在 javascript 的每一行中匹配和替换奇数数量的斜杠 (\)。
它们用于对字符串进行转义,但有时字符串会被换行,因此斜杠必须移动到下一行。

这里是一个例子:http://regex101.com/r/iI9vO9

我想匹配标有“是”的行,忽略标有“否”的行。

例如:

"Yes 1\" + 
"No 2\\" + 
"Yes 3\\\" + 
"No 4\\\\" + 
"No"

应改为:

"Yes 1" + 
"\No 2\\" + 
"Yes 3\\" + 
"\No 4\\\\" + 
"No"

注意每行斜线前后都有字符,斜线重复奇数次时移到下一行。
我无法使用 (\\)(\\\\)* 或环顾四周。

如果这项工作可行,这就是我的想法:

text.replace(/([^\\])\\" \+ \n"(.)/gm, '$1\\$2"+ \n "')

如果 RegEx 无法做到这一点,我将不胜感激任何其他方式来实现这一点。
感谢您的帮助。

编辑:
对于在 Google 上查找此内容的人来说,这正是解决问题的方法:

text.replace(/([^\\])((\\{2})*)\\" \+ \n"/g, '$1$2" + \n"\\')

http://jsfiddle.net/5mGWF/1/

【问题讨论】:

  • 我只是做了一个简单的。看看:regex101.com/r/fH9iS5
  • 开箱即用的好想法 sshashank
  • @Martin,谢谢。您能否对此做出完整的回答?谢谢。
  • 很好,但请注意它需要匹配奇数斜线。您提供的正则表达式都没有解决这个问题!也请使用 JavaScript 作为 RegEx 引擎。谢谢!

标签: javascript regex replace


【解决方案1】:

这似乎是你想要的:

text = text.replace(/([^\\])((\\{2})*)\\\n/g, "$1$2\n\\")

http://jsfiddle.net/5mGWF/

【讨论】:

  • 是的,但是你能在你的 jsfiddle 中包含" \n + " 吗?我正在尝试使用它,但它会删除所有偶数斜线......
  • 没关系,我明白了。谢谢!我正在编辑这个答案
猜你喜欢
  • 1970-01-01
  • 2014-07-14
  • 1970-01-01
  • 2022-10-12
  • 1970-01-01
  • 2022-09-23
  • 2019-03-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多