精华内容
下载资源
问答
  • 说我有字符串“Torcellite”和另一个字符串“Tor” – 这两个字符串的相似长度是3,因为它们都以“Tor”开头.现在,另一个字符串“christmas”和“mas”将具有0的相似度,因为它们不以相同的字符集开头.在这两种情况下,...

    说我有字符串“Torcellite”和另一个字符串“Tor” – 这两个字符串的相似长度是3,因为它们都以“Tor”开头.现在,另一个字符串“christmas”和“mas”将具有0的相似度,因为它们不以相同的字符集开头.

    在这两种情况下,第二个字符串是第一个字符串的后缀.

    一个更清晰的例子:

    字符串长度:1〜10 ^ 5

    String:abaabc

    后缀:abaabc,baabc,aabc,abc,bc,c

    相似度:abaabc,none,a,ab,none,none

    相似长度:6,0,1,2,0,0

    答:6 0 1 2 0 0 = 9

    我有一个无效的逻辑来找到这些部分后缀匹配使用正则表达式.

    算法:

    >查找给定字符串的所有子字符串.

    >从后缀的子字符串中创建一个模式.

    for(int i=1; i

    Pattern p = Pattern.compile("^"+substrings[i].substring(0, i));

    Matcher m = p.find(string); //the given string for which similarities need to be calculated

    if(m.find())

    similaryLengths += i;

    }

    >因为我需要运行字符串的后缀,然后是模式的子字符串,所以它的复杂度大致为O(n ^ 2).

    >我想到在模式中使用分组来查找组,但我不确定正则表达式将是什么样子.我想到的是第一个子串是:(((((a)b)a)a)b)c)然后找到最长的组匹配.

    有没有更有效的算法可以实现他?

    展开全文
  • Python 正则最长最短匹配

    千次阅读 2015-04-12 17:19:03
    #!-*- coding:UTF-8 -*- ''' Created on 2015-4-12 @author: huangpeng03 ''' import re ...m = re.search('a.*c',str) #最长匹配 if m: print m.group() n = re.search('a.*?c',str) #最短匹配 if n:
    #!-*- coding:UTF-8 -*-
    '''
    Created on 2015-4-12
    
    @author: huangpeng03
    '''
    import re
    str = 'abcabc'
    
    m = re.search('a.*c',str)  #最长匹配
    if m:
        print m.group()
    
    n = re.search('a.*?c',str)  #最短匹配
    if n:
        print n.group()
    </pre><pre name="code" class="python">console:
    abcabc
    abc
    
    
    
    还一些其他用法:
    <img src="https://img-blog.csdn.net/20150412172728862?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvUVEzMzE5NDg3ODE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
    
    展开全文
  • 最近在阅读RequireJS 2.1.15源码,源码开始处定义了一系列的变量,有4个正则表达式: var commentRegExp = /(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg, cjsRequireRegExp = /[^.]\s*require\s*\(\s*["']([^'"\s]...

    最近在阅读RequireJS 2.1.15源码,源码开始处定义了一系列的变量,有4个正则表达式:

    var commentRegExp = /(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg,
            cjsRequireRegExp = /[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g,
            jsSuffixRegExp = /\.js$/,
            currDirRegExp = /^\.\//;

     

    commentRegExp正则用来匹配javascript代码中的注释,/m的用法可以参考这篇文章,/g的用法参考这篇文章commentRegExp中的*?这种用法之前没有见过,觉得很奇怪,因为*在正则表达式中代表0个或任意多个,?代表0个或1个,刚开始觉得*?这种写法很多余。请教同事才知道,*?这种写法是懒惰匹配。

     

    alert(/abc([\w]*)/mg.exec("abc1abc2")[0]);//abc1abc2
    alert(/abc([\w]*?)/mg.exec("abc1abc2")[0]);//abc


    通过下面这段代码可以看出:最长匹配和最短匹配的差别通过这段代码可以看出:最长匹配和最短匹配的差别,一个匹配尽可能多的字符,一个匹配尽可能少的字符。一般正则表达式引擎默认都是最长匹配的,如果我们想要最短匹配,那么可以在数量修饰符后面添加一个?变成最短匹配。

     

    /***注释1****/ var name = "aty"; /***注释2****/
    var name = "aty";

    通过上面这段代码可以知道,为啥requirejs匹配javascript注释要采用*?这种最短匹配模式了吧。如果我们要删除所有注释,那么应该采用最短匹配,否则var name="aty";这段代码会被替换掉。

     

    展开全文
  • 我有个需求,匹配 HTML 里的注释。以下两段代码:#!/usr/bin/env python3import...<=)",html,re.S)for i in item:print(i)上面这个可以匹配成功。这个就匹配不出来:#!/usr/bin/env python3import requestsimport...

    我有个需求,匹配 HTML 里的注释。以下两段代码:

    #!/usr/bin/env python3

    import re

    html = """

    11111

    """

    item = re.findall(r"(?<=)",html,re.S)

    for i in item:

    print(i)

    上面这个可以匹配成功。

    这个就匹配不出来:

    #!/usr/bin/env python3

    import requests

    import re

    import json

    import sys

    s = requests.session()

    params = {

    "ie" : "utf-8",

    "kw" : "linux"

    }

    page = s.get("http://tieba.baidu.com/f",params = params)

    text = page.text

    tiezi_data = re.findall(r"(?<=)",text,re.S)

    print(tiezi_data)

    print(len(tiezi_data))

    贴吧的页面里有大量注释,注释里有大量的信息,可以在浏览器里看到。但是我的正则只能匹配到第一个,我不知道为什么。

    展开全文
  • 匹配中文:[\u4e00-\u9fa5]  英文字母:[a-zA-Z]  数字:[0-9]  匹配中文,英文字母和数字及_:  ...同时判断输入长度: ...^[\w\u4E00-\u9FA5\uF900-\uFA2D]*$ 1、一个正则表达式,只含有
  • 正则表达式之最短匹配

    万次阅读 2018-06-20 13:02:57
    贪婪与懒惰当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。考虑这个表达式:a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索...
  • 字母开头,数字结尾,最长20,使用?=.{1,20}$ 固定总长度 ^(?=.{1,20}$)[a-zA-Z][a-zA-Z_]{0,19}[0-9_]{0,19}$ 参考: http://www.imooc.com/wenda/detail/571826 不能将量词应用于锚点。相反,限制输入字符串...
  • http://www.juapk.com/thread-2472-1-1.html 匹配中文:[\u4e00-\u9fa5]  英文字母:[a-zA-Z]  ...匹配中文,英文字母和数字及_:  ...同时判断输入长度: [\u4e00-\u9fa5_a-z
  •   电子邮件地址的格式是域内部分@域,其中域内部分最长为64个字符,而域名最长可达255个字符。 例如: name@domain name 可以使用任意ASCII字符: 大小写英文字母 a-z,A-Z 数字 0-9 name部分只允许输入 ‘-’...
  • 我一直认为,Java的regex-API(以及许多其他语言)中的后瞻性断言必须有明显的长度。因此,STAR和PLUS量词不允许在look-behinds内部使用。“[…] Java takes things a step further byallowing finite repetition. You...
  • mysql 正则匹配

    2018-02-14 09:21:54
    基本形式 属性名 regexp ‘匹配方式' 正则表达式的模式字符 ^ 匹配字符开始的部分 eg1: 从info表name字段中查询以L开头的记录 select * from info where name regexp '^L'; eg2: 从info表name字段中查询以aaa...
  • 利用正则表达式来设置最大输入字符长度

    万次阅读 热门讨论 2015-06-01 09:39:59
    在做机房合作的时候,很多东西都进行了“改革”,听二牛说输入的字符长度限制可以用正则表达式,当然限制字符长度不仅可以用这种方法来写,还有通过设置文本框属性等办法来解决。不过利用正则表达式,我还是没没想到...
  • 匹配模式指的是一些可以改变正则表达式匹配行为的选项或修饰符。不同的语言支持的匹配模式不同,使用的方式也不同。 一般可分为全局和内联两种。下面主要介绍.NET中的匹配模式,其它语言的匹配模式,后续视情况补充...
  • 史上最全的正则表达式-匹配

    千次阅读 2018-09-06 17:56:42
    在做项目的过程中,使用正则表达式来匹配一段文本中的特定种类字符,是比较常用的一种方式,下面是对常用的正则匹配做了一个归纳整理。 1、匹配中文:[\u4e00-\u9fa5] 2、英文字母:[a-zA-Z] 3、数字:[0-9] 4、...
  • 匹配中文:[\u4e00-\u9fa5]  英文字母:[a-zA-Z]  数字:[0-9]  匹配中文,英文字母和数字及_:  ...同时判断输入长度: ...^[\w\u4E00-\u9FA5\uF900-\uFA2D]*$ 1、一个正则表达式,只含有
  • 1、匹配中文:[\u4e00-\u9fa5] 2、英文字母:[a-zA-Z] 3、数字:[0-9] ...同时判断输入长度: [\u4e00-\u9fa5_a-zA-Z0-9_]{4,10} 5、 (?!_) 不能以_开头 (?!.*?_$) 不能以_结尾 [a-zA-Z0-9_\u4e00-\u9...
  • 仔细查看了那些报错的数据对正则表达式的匹配有了更深的理解。最短匹配遵循以下原则:最先开始的匹配拥有最高的优先权——The match that begins earliest wins。即最短匹配是右侧最短,左侧不可知,很可能最长。...
  • `3.0 常用正则表达式练习3.1 验证是否为有效数字3.2 验证密码3.3 验证真实中文姓名的3.4 验证邮箱的正则表达式3.5 身份证号码正则4.0 两种创建...5.1 怎么实现正则捕获5.2 捕获所有匹配结果6.0 正则表达式的分组捕获和
  • 1、匹配中文:[\u4e00-\u9fa5] ...同时判断输入长度: [\u4e00-\u9fa5_a-zA-Z0-9_]{4,10} 5、 (?!) 不能以_开头 (?!.*?$) 不能以_结尾 [a-zA-Z0-9_\u4e00-\u9fa5]+ 至少一个汉字、数字、字母、下划线 $ 与字符...
  • 正则表达式匹配) 2.1 判断是否使用DP(动态规划) 如果,s = “abc”, p = “abc”,那么s、p是否可以匹配,则决定于s2 = "ab"和p2 = "ab"是否匹配,以及字符串s的最后一个字母与字符串s最后一个字母是否匹配。...
  • 我们刚刚学习了在我的第一门Python课程中使用正则表达式(对编程非常陌生),我正在努力解决的一个家庭作业问题要求我们使用正则表达式查找长度为n或更长的所有单词,然后使用该正则表达式查找从文本文件中使用的格式词...
  • 正则表达式匹配的结果默认输出的是最长的字符串。(贪婪匹配) 若要得到长度最小的字符串,应该修改正则表达式,当遇到[*,+,?,{m,n}]四个操作符时,需要加入最小匹配操作符。 最小匹配操作符 操作符 说明 ...
  • 出品:Python数据之道(ID:PyDataLab)作者:Peter,来自读者投稿编辑:Lemon玩转正则表达式本文中介绍的是主要是 3 个知识点:正则表达式的相关知识Python的中 re 模块,主要是用来处理正则表达式一个利用 re 模块...
  • 常用的数字正则(严格匹配

    千次阅读 2018-10-02 19:26:43
    常用的数字正则(严格匹配)   正则 含义 ^[1-9]\d*$ 匹配正整数 ^-[1-9]\d*$ 匹配负整数 ^-?[1-9]\d*$ 匹配整数 ^[1-9]\d*|0$ 匹配非负整数(正整数 + 0) ^-[1-9]\d*|0$ 匹配非正整数(负整数 + 0) ...
  • 正则表达式匹配规则

    千次阅读 2016-10-24 18:41:12
    如果想匹配没有预定义元字符的字符集合,或者表达式和已知定义相反,或者存在多种匹配情况,应该怎么办?字符组查找数字、字母、空白很简单,因为已经有了对应这些字符集合的元字符,但是如果想匹配没有预定义元字符...
  • python正则表达式的贪婪匹配

    千次阅读 2020-03-24 13:23:24
    今天在工作过程中用到正则表达式。先说一下我的需求,给这样一个句子: 今天我和李白(Li Bai)一起去吃饭,路上碰到了露娜(luna),他俩打起来了。 我希望将句子中括号和括号里的内容删掉。这个需求可以通过re...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,487
精华内容 4,594
关键字:

最长长度匹配正则