javascript - 使用 javascript 和正则表达式删除具有特定字符的行

标签 javascript regex

我有一些包含以下内容的文本文件:

CID Principal CID 2 CID 3 CID 4
-
-
-
-
Observações Gerais:
Paciente relata dor cronica ,agudizada e limitante do joelho direito , edema +/3+, nega trauma ou queda, dor a palpação na interlinha articular medial.
Hipótese Diagnóstica:
Conduta:
Lisador dip, restiva 5 mg adesivos, gelo, fisioterapia, Rx da bacia, joelhos com carga e orientações.

我想要一个正则表达式来摆脱:

  • 所有空行
  • 仅包含“-”且没有更多字符的行。

我试过:

mytext.replace(/^\s*[\r\n\-]/gm, "");

但运气不好。 我怎样才能使用 javascript 做到这一点?

最佳答案

如果带连字符的行总是由一个连字符组成,您不妨使用非正则表达式解决方案,例如

text.split("\n").filter(x => x.trim().length > 0 && x != '-').join("\n")

至于正则表达式的解决方案,你可以使用

/^(?:\s*|-+)$[\r\n]*/gm

参见 regex demo .请注意,它将删除由一个或多个连字符组成的行,如果这不是预期的,请将 -+ 替换为 -

详细信息:

  • ^ - 行首
  • (?:\s*|-+) - 零个或多个空格或一个或多个连字符
  • $ - 行尾
  • [\r\n]* - 零个或多个 CR 或 LF 字符。

查看 JavaScript 演示:

const text = "CID Principal CID 2 CID 3 CID 4\n-\n-\n-\n-\nObservações Gerais:\nPaciente relata dor cronica ,agudizada e limitante do joelho direito , edema +/3+, nega trauma ou queda, dor a palpação na interlinha articular medial.\nHipótese Diagnóstica:\nConduta:\nLisador dip, restiva 5 mg adesivos, gelo, fisioterapia, Rx da bacia, joelhos com carga e orientações.";
const regex = /^(?:\s*|-+)$[\r\n]*/gm;
console.log(text.replace(regex, ''));
// Non-regex solution:
console.log(text.split("\n").filter(x => x.trim().length > 0 && x != '-').join("\n"));

关于javascript - 使用 javascript 和正则表达式删除具有特定字符的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66034315/

相关文章:

javascript - Angular : Population of Radio button groups in loop(ng-repeat) - selection not working

javascript - SELECT控件,如何设置要显示的内容

JavaScript 事件(点击),每次点击

java - 如果后面的组没有被捕获,则在第一次捕获组后忽略空格

r - 在长度超过 n 个字符的单词之间包含空格

regex - "begins with"在数字数组中查询的 Mongo 匹配数字

regex - Sed 在命令行中不起作用,但是在线测试 regex101 中的正则表达式有效

javascript - 如何 sinon spy 模块导出实用函数

javascript - 对于企业应用程序,输入验证应该是客户端还是服务器端?

regex - 将所有文本 url 替换为 html url