RegEx - 需要删除所有单词序列,允许一个空格继续单词

时间:2012-04-24 21:49:23

标签: regex

尝试从html文档中的名称集合中删除空格和制表符时遇到问题。

例如:

        FU BAR       
RE BAR          NULL

我需要回答的只是:

FU BAR RE BAR NULL

我一直在尝试:

[^A-Z]+([[A-Z]{1,}\s]+)[\s\r\n\t]+

并且仍然留有一些分散的空格或标签。任何建议?

3 个答案:

答案 0 :(得分:1)

为什么不使用:s/\s+/ /g

哦,刚才意识到这并没有说明领先和尾随空格。您可以先通过此正则表达式运行输入,然后再运行上面的输入来处理这些:

s/^\s+|\s+$//

答案 1 :(得分:1)

用一个空格替换\s+怎么样? (假设我们不受限于单线匹配)。

(如果我们使用一些逐行正则表达式替换,例如某些Unix工具,我们将核心所有前导和尾随空格,用单个空格替换内部空白区域,并删除空行或只包含空格。)

您是否尝试将此应用于HTML文档的某些部分,同时保留其他区域的空白?如果是,请通过反映此要求的示例更新您的问题。

答案 2 :(得分:0)

如果您使用的是Java,

String normalizeSpace = str.replaceAll("\\s+", " ");
Commons Lang 2.6中的

StringUtils包含具有相同功能的方法normalizeSpace(包含控制字符,char< = 32)。