使用JavaScript和正则表达式删除包含特定字符的行

3

我有一些文本文件,其中包含以下内容:

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做到这一点?


正则表达式是否匹配了“-”行?https://regex101.com/r/HcCxd5/1 - evolutionxbox
1个回答

4
如果带连字符的行始终只包含一个连字符,那么最好使用非正则表达式的解决方案,例如:
text.split("\n").filter(x => x.trim().length > 0 && x != '-').join("\n")

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

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

请参见正则表达式演示。请注意,如果不希望删除由一个或多个连字符组成的行,请将-+替换为-
细节:
  • ^ - 行的开头
  • (?:\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"));


谢谢。它运行良好。现在我正在获取其他文本字符串,例如:'Anamnese\n' + '========\n' + '\n' + 'CID主要CID 2 CID 3 CID 4 \n' + '一般注释:\n' + '返回想要针灸治疗的请求已停止治疗CD:针灸+定向返回治疗\n' + '诊断假设:\n' + '行为:\n' 。是否可以去掉那个'\n'? - Luiz Alves
@LuizAlves 好的,我明白了,\s+必须替换为\s* - Wiktor Stribiżew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接