【问题标题】:Regular expression for correct comma formatting正确逗号格式的正则表达式
【发布时间】:2014-05-27 09:55:00
【问题描述】:

我正在尝试创建一个正则表达式,将文本文件中所有常见的不正确逗号格式更改为正确的格式 - 不想找到正确的逗号格式。

查找前后至少有一个空格的逗号(已编辑:将 * 更改为 +,错字):

/ +, */

查找后面没有空格的逗号:

/,(?! )(?!\n)/

查找一个逗号后有多个空格:

/,  +/

组合:

/ +, *|,(?! )(?!\n)|,  +/

此外,我根本不希望它匹配文本字符串。使用前后带有 " 或 ' 的字符串的代码:

"," "hjsdh,hjj,jhj"
',' 'asjj,'

如何组合这些?

查找应替换为正确的逗号(逗号和空格)。

不正确的逗号格式示例:

#,#
# ,#
#,  #
#  , #

【问题讨论】:

  • 为什么要使用正确的逗号? ` *, *` 将匹配所有内容,您只需替换为 ,
  • 找不到仅包含逗号的字符串是什么意思?你的整个文件是一个字符串。你的意思是一行只有一个逗号?
  • 您使用的是哪个 IDE?
  • 为什么要为任何事情烦恼?我希望文本用户阅读是正确的。我想做漂亮的打印代码sn-ps。
  • @LeoD3 我编辑得更清楚了。

标签: regex pretty-print


【解决方案1】:

找到\s*,\s* 并替换为#, #

这对你有帮助吗?

【讨论】:

    【解决方案2】:

    既然您似乎希望能够匹配只是不正确的逗号,那么:

    /( +, *|, {2,}|\b,\b)/
    
    • 匹配逗号前面的任何空格
    • 匹配逗号后面有超过 1 个空格的逗号
    • 将逗号与其两侧的单词字符直接匹配

    有许多特殊情况你没有指定你想如何处理,例如",,,""1,200,000"",hi""hi,"

    RegExr - 显示该处理和不处理的情况。

    【讨论】:

    • 谢谢。但我只想排除由 " 或 ' 包围的单独逗号(字符串代码)。是的,正确的逗号(逗号和一个空格)。
    • @Leo,在这种情况下,如果你在第二个正则表达式中去掉 (?!^,$),它可能会匹配你想要的 - 但是有很多特殊情况我不得不猜测在你想要发生的事情上。例如'你好,?' '1,400',任何涉及符号或其他格式错误的英语。例如see here
    • 不,只是想忽略像(字符串中的逗号)这样的代码:“,”或“,”而不是像这样“不是,像这样”或','所以像这样? /(?!",")(\s+,\s*|,\s{2,}|\b,\b)/
    • \b,\b 找到了正确的位置,但你不能用正确的逗号(或任何东西)替换文本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多