草庐IT

regexp_substr

全部标签

SQL Server 查找字符串LIKE vs SUBSTRING vs LEFT/RIGHT vs CHARINDEX

开发人员经常需要在数据库表中查询以某种文本模式开始和/或结束的记录。例如,查找名字以“DAV”开头的所有员工。根据我的经验,SQL开发人员通常依赖4个常用函数来实现这一点。就在那时,这位好奇的顾问决定将它们正面交锋:LIKE vs SUBSTRING vs LEFT / RIGHT vs CHARINDEX,看看哪个最快。 赛前秀出于测试目的,使用MicrosoftSQLServer2014在具有128GB内存、16核CPU、额定频率为2.54Ghz的Windows2012Server上执行SQL代码。 为了让事情变得更有趣,测试分为两部分:将测试每个对表的速度将根据常规“字符串”数据测试每个

hive 正则表达替换函数 regexp_replace

1、语法:regexp_replace(subject,pattern,str)注:subject,pattern,str都为字符串,subject为被替换的字符串,pattern为正则表达式,str需要替换的字符串。2、表描述:表explode_test,表头(area,good_id,sale_info)a:shangdong,b:beijing,c:shanghai1,2,3[{"source":"7fresh","monthSales":4900,"userCount":1900,"score":"9.9"},{"source":"jdmart","monthSales":7900,"

javascript - RegExp 的 exec() 函数和 String 的 match() 函数有什么区别?

如果我运行这个:/([^\/]+)+/g.exec('/a/b/c/d');我明白了:["a","a"]但是如果我运行这个:'/a/b/c/d'.match(/([^\/]+)+/g);然后我得到了预期的结果:["a","b","c","d"]有什么区别? 最佳答案 带有全局正则表达式的exec应该在循环中使用,因为它仍然会检索所有匹配的子表达式。所以:varre=/[^\/]+/g;varmatch;while(match=re.exec('/a/b/c/d')){//matchisnowthenextmatch,inarrayf

regex - Golang : Why does regexp. FindAllStringSubmatch() 返回 [][]string 而不是 []string?

我是新手,这是我第一次必须处理正则表达式。令我有点惊讶的是someregex.FindAllStringSubmatch("somestring",-1)返回了一个slice[][]string而不是一个简单的slice字符串:[]string.例子:someRegex,_:=regexp.Compile("^.*(mes).*$")matches:=someRegex.FindAllStringSubmatch("somestring",-1)fmt.Println(matches)//logs[[somestringmes]]这种行为的原因是什么,我想不通?

ruby - 如何将Regexp.last_match传递给Ruby中的 block

有没有办法把最后一个匹配(实际上是Regexp.last_match)传递给ruby中的块(迭代器)?这里有一个示例方法作为Srring#sub的包装器来演示这个问题。它接受标准参数和块:defnewsub(str,*rest,&bloc)str.sub(*rest,&bloc)end它只在标准参数的情况下工作,并且可以接受一个块;但是像$1、$2等位置特殊变量在块中不可用。下面是一些例子:newsub("abcd",/ab(c)/,'\1')#=>"cd"newsub("abcd",/ab(c)/){|m|$1}#=>"d"($1==nil)newsub("abcd",/ab(c)/

使用 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

java - 是否有 substring(start, length) 函数?

我正在尝试使用与C#的string.SubString(intstart,intlength)类似的方法。但是Java中的substring函数是string.substring(intstart,intend)。我希望能够将起始位置和长度传递给子字符串函数。谁能帮我解决这个问题? 最佳答案 可能是这样的StringmySubString(StringmyString,intstart,intlength){returnmyString.substring(start,Math.min(start+length,myString.l

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