草庐IT

REGEXP_SUBSTR

全部标签

使用 gsub 的 Ruby Regexp 是否有等同于 self 关键字?

例如,假设我想获取一个字符串并为每个a-z字符添加1个值。我正在寻找具有类似语法的东西:str='abc123'str.gsub(/[a-z]/,self.next!)输出为:bcd123我知道我可以使用一些代码,例如:irb(main):075:0>'abc123'.split('').map{|x|ifx=~/[a-z]/thenx.next!elsex=xend}.join=>"bcd123"但是,这似乎很草率而且效率不高。我想有一种更简洁的方法来完成同样的壮举。提前致谢。 最佳答案 String#gsub接受可选block。

ruby - 为什么 URI.escape() 被标记为过时,这个 REGEXP::UNSAFE 常量在哪里?

我试图弄清楚ruby​​2.2.3中URI.escape的默认不安全字符集是什么。docs说:BydefaultusesREGEXP::UNSAFE但是我在URI模块中的任何地方都找不到那个常量。此外,thiscode(下面的片段)自2009年以来将escape/unescape方法标记为“过时”。为什么它们已过时?lib/uri/common.rb:97defescape(*arg)warn"#{caller(1)[0]}:warning:URI.escapeisobsolete"if$VERBOSEDEFAULT_PARSER.escape(*arg)end文档是否错误/已过时?

java - 在 JavaScript RegExp 中复制 Java 的 "Pattern.quote"的功能

这个问题在这里已经有了答案:IsthereaRegExp.escapefunctioninJavaScript?(18个答案)关闭7年前。在Java中,您可能会尝试使用Pattern.compile("stackoverflow.com")创建一个与URLstackoverflow.com匹配的正则表达式。但这是错误的,因为.在正则表达式中具有特殊含义。解决此问题的最简单方法是编写Pattern.compile(Pattern.quote("stackoverflow.com")),结果为:Pattern.compile("\\Qstackoverflow.com\\E")其中"quo

c++ - 获取字符串的一部分,std::string::erase 或 std::string::substr 哪个更快

我正在检索和存储我可以使用std::string::erase或std::string::substr的字符串的一部分。我想知道以下哪种方法更快(完成时间更短)和效率更高(内存分配/重新分配更少)。此外,有关内存如何通过erase和substr分配/重新分配的任何信息都将非常有帮助。谢谢!std::stringnodeName("ABCD#XYZ#NodeName");conststd::stringlevelSeparator("#");选项1:使用std::string::substrstd::string::size_typenodeNameStartPosition=nodeN

sql - regexp_replace 配置单元中的正则表达式

我的表中有几行。这行看起来像:Atribute|---------------|B=10;MB=12;A=33|---------------|MB=16;B=12;A=23|---------------|A=10;MB=23;B=58|等等我只需要在“B=”之后获取数字。对于那个例子,我应该得到:101258为了得到这个结果,我应该写什么选择查询?(查询不应与'MB='和'B='混淆) 最佳答案 hive>selectregexp_extract('B=10\;AB=12\;B=33','(\;|^)B=([0-9]*)',2)

java - regexp_replace 异常

我正在尝试在ClouderaHue界面中运行一个配置单元查询,它可以很好地处理几百条记录。当我在更大的数据集上运行它时,它失败了。我试着在互联网上搜索它,但看起来有很多类似的错误,但不是我正在寻找的确切解决方案。我在我的配置单元查询中使用了redexp_replace,我认为这不会导致任何异常(我的印象是它可以轻松处理字符串和NULL类型)我得到的错误是java.util.regex.PatternSyntaxException:Unmatchedclosing')'nearindex12更新:这是导致问题的记录:columnA:ReadData(或ListDirectory)B列:列

regex - 使用配置单元 regexp_replace 从数据中删除大括号和美元符号

我需要从配置单元中的一个字段中删除美元符号和大括号。示例数据:$210.53$210.53($390.53)($210.53)问题是有些记录有大括号,有些则没有。以下是我想出的语法:selectREGEXP_REPLACE(amount,'\(\$|\)','')asamountfromtablewhereid=1234;输出:$210.53$210.53390.53210.53此语法不会从没有大括号的记录中删除美元符号。有人可以指导我吗? 最佳答案 如果您想从字段中删除a)美元符号和b)括号,您需要编写涵盖这两种情况的正则表达式。

regex - 当 regexp_like 和 regexp_extract 工作正常时,Impala regexp_like 查询返回 null

我需要使用regex_extract从列中的字符串中提取数字。我在外部表上使用Impala。我已经检查了正则表达式,为了测试它,我还使用了regexp_like和regexp_replace。他们两个都工作得很完美。这里是查询:selectsucursal,regexp_like(sucursal,'^[0-9]{1,3}')asmatch,regexp_extract(sucursal,'^[0-9]{1,3}',1)asCodSucusal,regexp_replace(sucursal,'^[0-9]{1,3}','lala')asRepCodSucusalfromjdv.stg

csv - Hive - 复杂的 regexp_replace

我不是正则表达式专家,我在Hive中使用regexp_replace时遇到问题。我想将CSV文件加载到Hive中,其中包含如下行:AAA,1234,BBB,,,"""CC,CCC""","""DDD""","""EE"EEE""",,"""AAA""",1234,BBB,,,CCCC,"""DD,DD""",,"""FFFF""",如您所见,格式并不完美字符串字段中有非转义逗号一些字符串字段用“””(3个双引号)括起来字符串字段中有非转义双引号有空字段当我尝试将其导入Hive表时,由于未转义的逗号,列无法很好地解析。所以我将原始数据作为行导入到Hive表中,如下所示:CREATEEXT

regex - 配置单元查询 regexp_extract

我正在尝试从“[223.104.227.42]”中提取IP地址。我想提取“[”和“]”之间的223.104.227.42,我正在使用这个查询:selectregexp_extract('[223.104.227.42]','\\[(.*?)\\]')但是我得到一个错误:FAILED:Infunctionregexp_extract,patternmusthasonegroupreferenceatleast. 最佳答案 尝试将捕获组索引指定为参数(1):hive>selectregexp_extract('[223.104.227.