gpt4 book ai didi

ruby - 如何应用正则表达式 POSIX 类减法或等价物?

转载 作者:太空宇宙 更新时间:2023-11-03 17:06:28 25 4
gpt4 key购买 nike

尝试在 ruby​​ 中执行此操作,但我想这个问题适用于任何处理 POSIX 类的正则表达式语言

目标:我想用一个常规的单个空格替换所有匹配 [[:space:]] POSIX 类的字符,tab 除外。

希望字符类减法适用于 POSIX 类,我试过了,但它不起作用

value.gsub!(/[ [[:space:]] - [\t] ]/, ' ')

有没有办法重写它,以便我可以用单个常规空格字符匹配和替换 [[:space:]] 类中找到的任何字符(制表符除外)?

更新

感谢您的所有回答。

我在问题中搜索和定义的答案集中在 [[:space:]] POSIX 类,因为该类不仅扩展了 ascii 字符和控制字符,还包括不规则或非- unicode 中的 ascii 空白等价物等。因此,虽然我同意我可以去构建自己的类并找到每个可能的空白,但我宁愿利用定义的现有类来包含这些空白并从中删除我想要的.

初步测试表明提供了以下 3 个答案:

value.gsub!(/(?!\t)[[:space:]]/, ' ')  # appears to be language agnostic regexp approach which is good if needed

value.gsub!(/[[:space:]&&[^\t]]/, ' ') # for languages that don't actually support true class subtraction

value.gsub!(/[^[:^space:]\t]/, ' ') # inverse or double negative approach

产生预期的结果。我最喜欢前两个,但是由于我最初用 ruby​​ 来构建问题并且答案指出 ruby​​ 实际上不支持类减法而是演示了与否定的交集,所以我选择这个问题的答案是因为它似乎即使对于非 POSIX 类,也很高兴知道这一点。

最佳答案

你可以使用

/[[:space:]&&[^\t]]/

参见 Rubular demo

详情

  • [ - 字符类的开始(括号表达式)
    • [:space:] - 匹配空白字符的 POSIX 字符类
    • && - 字符类交集运算符
    • [^\t] - 除制表符以外的任何字符
  • ] - 字符类的结尾(括号表达式)。

查看更多关于如何使用的信息 character class subtraction in Ruby .

关于ruby - 如何应用正则表达式 POSIX 类减法或等价物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47985045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com