javascript - 保留文本但消除标签之间的 CR LF

标签 javascript regex vbscript flat-file ecma262

各位正则表达式专家,

我有一个充满表达式的平面文件,例如:

SELECT * FROM CONVENIENT_ONE_LINE_QUERY
"SELECT * FROM THIS_QUERY
WHERE IS_SPREAD_OVER == 123
ORDER BY MULTIPLE_LINES
HAVING AND_IS_BETWEEN_QUOTES"
SELECT * FROM ANOTHER_CONVENIENT_ONE_LINER

我想消除引号和引号本身之间的 CRLF ,这样我的所有查询都是方便的单行语句:

SELECT * FROM CONVENIENT_ONE_LINE_QUERY
SELECT * FROM THIS_QUERY WHERE IS_SPREAD_OVER == 123 ORDER BY MULTIPLE_LINES HAVING BUT_IS_BETWEEN_QUOTES
SELECT * FROM ANOTHER_CONVENIENT_ONE_LINER

请发布解决方案中使用的正则表达式风格。我正在使用 TextCrawler,它声称是 ECMA262(与 VBScript/Javascript 相同),我最接近的解决方案如下:

(\r\n".*)(.*)\r\n(.*"\r\n)

请原谅我的无知。 此致, 山猫开普勒

最佳答案

如果下一个 " 位于行尾,您可以首先删除所有 CRLF:

result = subject.replace(/\r\n(?=[^"]*"$)/mg, " ");

说明:

\r\n    # Match a CRLF
(?=     # if and only if
 [^"]*  # it is followed by any number of non-quote characters
 "      # and a quote
 $      # at the end of a line
)       # End of lookahead.

这会将您的示例转换为

SELECT * FROM CONVENIENT_ONE_LINE_QUERY
"SELECT * FROM THIS_QUERY WHERE IS_SPREAD_OVER == 123 ORDER BY MULTIPLE_LINES HAVING AND_IS_BETWEEN_QUOTES"
SELECT * FROM ANOTHER_CONVENIENT_ONE_LINER

enter image description here

然后,在第二步中,删除引号:

result = subject.replace(/^"|"$/mg, "");

关于javascript - 保留文本但消除标签之间的 CR LF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6046708/

相关文章:

javascript - 将对象数组的 AJAX 响应转换为 JSON 对象

javascript - 在没有 new 关键字的情况下创建 promise

javascript - 如何取消选中 Framework7 中的自定义设计单选按钮?

javascript - 无法读取未定义的匹配属性 - 找不到函数

vbscript - QTP/UFT Capturebitmap 直接保存到 Quality Center (QC)

javascript - 如何理解这个由数字组成的 javascript 代码

python - 如何解析日志文本文件、解析日期时间并获取时间增量总和

java - 查找两个特定单词之间的字符串

file - VBscript WMI 不定位文件,FSO 做

xml - 将 XML 发布到经典 asp 页面并检索页面上的发布数据