首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

后端 | Java 利用substring()和indexOf()从字符串中获取指定的字符

9之间的字符(不包含9) * str.indexOf("/"); -->返回str中“/”第一次出现时的下标 * str.indexOf("/", 5); -->返回跳过...str的前6个字符后,“/”第一次出现的下标。...Riven/12346789999"; /*第一种情况:知道具体字符下标,直接用substring()传入字符下标截取*/ // 第一种情况假设我们已经知道了str的具体值...,我们要从str中取出name->Riven String riven = str.substring(4, 9); // 这里传入R的下标4,再传入第二个“/”的下标9,拿到的就是Riven...”之间的数据就是我们的name字段了 // indexOf()可以传两个参数,第一个是要寻找的子字符串,第二个是从哪个下标位置开始寻找,这里传入i+1就是跳过了第一个“/”之前的下标

3.2K40

JS正则表达式--从入门到精分

正则表达式是被用来匹配字符串中的字符组合的模式 在JavaScript中,正则表达式也是对象 这种模式可以被用于 RegExp 的 exec 和 test 方法 以及 String 的 match、replace...一般的括号被称为捕获分组 /(foo) (bar) \1 \2/ 中的 '(foo)' 和 '(bar)' 匹配并记住字符串 "foo bar foo bar" 中前两个单词。...模式中的后向引用 \1 和 \2 匹配字符串的后两个单词。注意 \1、\2、\n 是用在正则表达式的匹配环节。...lastIndex指定;匹配失败后起始位置则重置到最后一次尝试的后一个字符上 根据目标字符串和正则模版 逐个搜索 ,匹配失败后 回溯(sù) 到该次扫描之前的位置上,并尝试其他可能的分支 在字符串的当前位置上的所有可能分支都尝试失败后...能得到比re2更长的字符串, 对于str2来说,re1和re2的结果等效,re1还比re2所用的步骤少一些 回溯失控 失控情况1:不完整的html页面代码 /[\s\S]*?

1.5K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    玩转JavaScript正则表达式

    回车符(\u000D) \xnn 由十六进制数nn指定的拉丁字符 \uxxx 由十六进制数xxxx指定的Unicode字符 \cX 控制字符^X 注: 由十六进制数nn指定的拉丁字符,例如:\x0A...只组合,把项组合到一个单元,但不记忆与该组相匹配的字符 \n 和第n个分组第一次匹配的字符相匹配,组是圆括号中的子表达式(也有可能是嵌套),组索引是从左到右的左括号数,“(?...:”形式的分组不编码 锚字符 字符 匹配 ^ 匹配字符串的开头,在多行检索中,匹配一行的开头 $ 匹配字符串的结尾,在多行检索中,匹配一行的结尾 \b 匹配一个单词的边界,简而言之,就是位于字符\w和字符...我们可以将URL分为三个部分: 协议头:^http://或^https:// 主机名:主机名是位于^http://之后和第一个反斜杆(如果有的话)之前的内容。 路径:除了上面两者之外的内容。...第一个表达式的问题在于,我们把反斜杆认为只是用来转义引号的,其实反斜杆在字符串中可以用来转义任何字符。因此,我们要匹配的文本其实是开始引号和结束引号之间,包括转义字符和非引号的任何字符。

    1.1K30

    玩转 JavaScript 正则表达式

    回车符(\u000D) \xnn 由十六进制数nn指定的拉丁字符 \uxxx 由十六进制数xxxx指定的Unicode字符 \cX 控制字符^X 注: 由十六进制数nn指定的拉丁字符,例如:\x0A...:”形式的分组不编码 锚字符 字符 匹配 ^ 匹配字符串的开头,在多行检索中,匹配一行的开头 $ 匹配字符串的结尾,在多行检索中,匹配一行的结尾 \b 匹配一个单词的边界,简而言之,就是位于字符\w和字符...我们可以将URL分为三个部分: 协议头:^http://或^https:// 主机名:主机名是位于^http://之后和第一个反斜杆(如果有的话)之前的内容。 路径:除了上面两者之外的内容。...或者2、3、1、4个字符?还是其他情况?这样会把正则引擎搞疯掉的啦! 匹配String 其实匹配引号内字符串的最简单办法是用这个表达式:/"[^"]*"/。...第一个表达式的问题在于,我们把反斜杆认为只是用来转义引号的,其实反斜杆在字符串中可以用来转义任何字符。因此,我们要匹配的文本其实是开始引号和结束引号之间,包括转义字符和非引号的任何字符。

    4.3K00

    玩转JavaScript正则表达式

    回车符(\u000D) \xnn 由十六进制数nn指定的拉丁字符 \uxxx 由十六进制数xxxx指定的Unicode字符 \cX 控制字符^X 注: 由十六进制数nn指定的拉丁字符,例如:\x0A...只组合,把项组合到一个单元,但不记忆与该组相匹配的字符 \n 和第n个分组第一次匹配的字符相匹配,组是圆括号中的子表达式(也有可能是嵌套),组索引是从左到右的左括号数,“(?...:”形式的分组不编码 锚字符 字符 匹配 ^ 匹配字符串的开头,在多行检索中,匹配一行的开头 $ 匹配字符串的结尾,在多行检索中,匹配一行的结尾 \b 匹配一个单词的边界,简而言之,就是位于字符\w和字符...我们可以将URL分为三个部分: 协议头:^http://或^https:// 主机名:主机名是位于^http://之后和第一个反斜杆(如果有的话)之前的内容。 路径:除了上面两者之外的内容。...第一个表达式的问题在于,我们把反斜杆认为只是用来转义引号的,其实反斜杆在字符串中可以用来转义任何字符。因此,我们要匹配的文本其实是开始引号和结束引号之间,包括转义字符和非引号的任何字符。

    1.4K50

    12 Python正则表达式

    这我们就知道了,要想成功进行字符串的匹配,需要正则表达式模块,正则表达的匹配规则,以及需要被匹配的字符串。 在这三个条件中,模块和字符串都是准备好的,只需要匹配规则异常的灵活。...3.1 量词符号 符号 描述 re1|re2 匹配正则表达式re1 或者 re2 ^ 匹配字符串起始部分 $ 匹配字符串终止部分 * 匹配0次或者多次前面出现的正则表达式 + 匹配一次或者多次前面出现的正则表达式...print(re.findall('[^jie]', data)) 执行效果: 3.2 组 符号 描述 () 在匹配规则中获取指定的数据 看这描述可能会有点懵,我们直接看代码演示: import...$分别匹配目标字符串中行的起始和结尾,而不是严格匹配整个字符串本身的起始和结尾。...(点号)通常匹配除了\n(换行符)之外的所有单个字符;该标记表示"."(点号)能够匹配全部字符 re.X、re.VERBOSE 忽略规则表达式中的空白和注释 ​

    44710

    WriteUp分享 | CTF-web

    方法一:$f = trim(file_get_contents($fn)) 想办法获得一个文本文件fn提取字符串赋值给f.可以在自己的服务器上加个txt内容与ac的get值相等是可以做的...再想出题人不可能让每个做的人去自己服务器写个...可根据$_REQUEST构造get hello的内容,之后给到var_dump函数处理通过eval函数进行字符串打印语句,之后进行执行打印文件....> 分析: 明白正则就很简单了,/匹配开始,/key匹配第一个key,.*匹配0次或多次的除换行符之外的字符,key再匹配一个key,{4,7}key匹配4次到7次的key,\/....\/中,\为转义字符,即匹配符号//并且之中可匹配除换行符意外的任意字符,(....*key)意思与之前相同,[a-z]可匹配a-z的字母,[:punct:]意思为可以匹配符号,/i的意思是不区分大小写。 7.PHP很烦人?

    6.6K80

    python正则表达式

    二:正则表达模式 2.1.符号 表示法 描述 正则表达式实例 literal 匹配文本字符串的字面值literal foo re1|re2 匹配正册表达式re1或者re2 foo|bar...像一个仅由name标识而不是数字ID标识的正则分组匹配 (?P) (?P) 在同一字符串中匹配由(?P)分组的之前文本 (?P=data) (?#...)...匹配条件是如果...出现在之后的位置,而不使用输入字符串:称作正向前视断言 (?=.com) (?!...) 匹配条件是如果...不出现在之后的位置,而不使用输入字符串:称作负向前视断言 (?!....匹配条件是如果...出现在之前的位置,而不使用输入字符串:称作正向后视断言 (匹配条件是如果...不出现在之前的位置,而不使用输入字符串:称作负向后视断言 (?...^和$分别匹配目标字符串中行的起始和结尾,而不是严格的匹配整个字符串本身的开始和结尾 re.S、re.DOTALL 点号.通常匹配除了换行符\n之外的所有单个字符,该标记表示点号能够匹配全部字符

    86231

    【译】《Understanding ECMAScript6》- 第一章-基础知识(一)

    如果传入了第二个参数,includes()和startsWith()方法将检索父字符串自给定位置之后的内容,而endsWith()则将检索父字符串自检索位置之前的内容。...,然而在ES6之前的几个版本升级中并没有太大改变。...带有y标(也称为粘性标志)志的正则表达式从lastIndex属性指定的位置开始匹配,如果此位置没有正确匹配的字符,正则表达式将停止对后面内容的匹配。...与全局g标志的规则一样,粘性标志y在完成一次匹配之后,会将lastIndex设置为本次匹配字符串最后一个字符的索引值加一。如果本次匹配无对应结果,lastIndex值将被初始化为0。...粘性正则和全局正则第一次exec()匹配之后lastIndex值变为7,第二次匹配后变为14。

    1.2K50

    数据对齐-编辑距离算法详解(Levenshtein distance)

    总结一句话:编辑距离就是从一个字符串变到另外一个字符串所需要最小的步骤 一:简介 在信息论、语言学和计算机科学中,Levenshtein distance是用于测量两个字符串之间差异的字符串度量...:代表匹配或者不匹配,这取决于各个符号是否相同 2:a small case 我们计算一下kitten和sitting之间的编辑距离 kitten → sitten (替换 “k” -> “s”)...,就比如同一个地点:“北京市朝阳区IT产业园“,在后台数据中可能有“北京朝阳区IT产业园”或者“北京朝阳区it园”等一系列数据,我们又不能去做模糊查询(因为节点数据和边关系为千万级的,模糊查询可能会匹配到大量的节点返回导致返回大量的数据影响项目稳定...通过 ****脚本 生成拼音词典和编辑距 离词典。脚本执行完之后,会在 ***目录 下生成词典数据。...、在b中删除一个字符、ab中均删除一个字符获得结果中取最小值 return re1 re2 ?

    2.8K20

    知识点:匹配字符串中的子串,并让子串红色显示、格式化输出json、元素点击之后hover失效、word-wrap:break-word和word-break:break-all

    匹配字符串中的子串,并让子串红色显示、格式化输出json、元素点击之后hover失效、word-wrap:break-word和word-break:break-all 五、匹配特定的字符串,让其突出显示...newstr); 六、格式化输出json JSON.stringify(object,null,2) JSON.stringify(object,undefined,2) 其中第三个参数表示指定缩进用的空白字符串...七、jQuery中,某个元素被点击之后hover失效 使用jQuery的click为某元素加上css样式,之后该元素原有的hover事件失效,原因是click加上的css权值比外联的css权值大。...所以是点击之后原有css被覆盖了。解决方法也很简单,为原有的css hover样式加上!important。...八、word-wrap:break-word和word-break:break-all word-wrap:break-word表示超出部分按单词截断,会保持单词的完整。

    73420

    Java 正则表达式的灾难性回溯

    超线性正则表达式复杂度也可能导致相同的影响,在这种情况下,需要一个精心构造的大输入(数千个字符)。 风险评估 要确定代码中是否存在此风险,可以尝试回答如下问题: 输入是用户控制的。...,表示可以匹配零次或多次 r,但不会占有匹配的字符(即允许回溯),如果 r 可以在相同输入上产生不同的可能匹配(可能长度不同),最坏情况下的匹配时间可能是指数级的。...例如,a*b* 没有问题,因为 a* 和 b* 匹配不同的东西,而 a*_a* 也没有问题,因为重复部分由一个 _ 分隔,并且不能匹配该 _。然而,a*a* 和 .*_.* 具有二次运行时间。...使用非回溯的正则表达式实现,如Google的 RE2[2] 或 RE2/J[3]。 使用多次处理,预处理或后处理字符串,或使用多个正则表达式。...一个例子是将 str.split("\\s*,\\s*") 替换为 str.split(","),然后在第二步中修剪字符串中的空格。

    15410

    编写高质量代码改善C#程序的157个建议

    在运行时调用System.String类中的任何方法或进行任何运算(如“=”赋值、“+”拼接等),都会在内存中创建一个新的字符串对象,这也意味着要为该新对象分配新的内存空间。...在上面的代码中,如果预先判断字符串的长度将大于16,则可以为其设定一个更加合适的长度(如32)。StringBuilder重新分配内存时是按照上次容量加倍进行分配的。...当然,我们需要注意,StringBuilder指定的长度要合适,太小了,需要频繁分配内存,太大了,浪费空间。...,SeondType和ojbect之间有没有继承关系。...as操作符永远不会抛出异常,如果类型不匹配(被转换对象的运行时类型既不是所转换的目标类型,也不是其派生类型),或者转型的源对象为null,那么转型之后的值也为null。

    57740

    python正则一些简单匹配

    元字符的使用 re.findall(regex,string) 功能:在string字符串中,匹配regex正则表达式能够匹配的项,放到一个列表中返回 * 普通字符串  元字符 :abc   匹配规则...| re2 匹配规则:既能匹配正则表达式re1所表达内容,也能匹配           re2所表达内容 匹配示例:ab | bc  --》  ab   bc In [5]: re.findall('...,'ab') Out[32]: ['ab'] * 匹配前面的字符或re指定次数 元字符 : {N}    N代表一个数字 匹配规则:匹配前面出现的字符或正则表达式N次 匹配示例: ab{3} --》 abbb...re指定次数 元字符 : {M,N}    M,N代表数字 匹配规则:匹配前面出现的字符或正则表达式M 到 N次 匹配示例: ab{3,8} --》 abbb  abbbbbbbb In [36]: re.findall...表示上面两项中任意内容 匹配规则: 匹配任意非中括号中的字符集 匹配示例: [^aeiou]  匹配任意一个非aeiou字符             [^a-z]  匹配任意一个非小写字母 In [46

    1K10

    如何彻底避免正则表达式的灾难性回溯?

    背景 这里有一篇文章详细的描述了一次正则回溯导致 CPU 100% 的发现和解决过程,原文比较长,我之前也在 OpenResty 的开发中遇到过两次类似的问题。...即使我们用了这类工具,有难免会有误报和漏报,那么有没有一劳永逸的方式来解决 ReDoS 呢? 那么我们就要回到问题产生的根源去寻找答案:正则引擎使用了回溯的方式来匹配。...Google RE2 谷歌的 RE2 是其中完成度比较高开源项目。它支持 PCRE 的大部分语法,而且有 Go、Python、Perl、Node.js 等多种开发语言的库实现,上手和替换成本很低。...采用 RE2 之后,对比非常明显: time perl -e 'use re::engine::RE2; if ("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" =~ /a?a?a?...OpenResty Sregex 最后提下自家开源的正则引擎: OpenResty Sregex,原理和上面两个类似,都没有回溯,适合做流式处理和大量正则的匹配。

    2.3K10

    Python正则表达式re库的使用

    指导思想:正则表达式只是一个工具,学会其中一种使用方法即可 1. ()和re.findall结合使用 ({}{})中第一个大括号替换为.则表示匹配所有字符,替换为[]则表示匹配中括号内限定的字符; 第二个大括号替换为...*则表示匹配长度为>=0,替换为+则表示匹配长度为>=1,替换为空则表示匹配长度为1 (.*)表示匹配任意长度的所有字符 ([0-9]*)表示匹配任意长度的数字 ([0-9,a-z])表示匹配长度为1的数字和小写字母...正则表达式中的元字符 \s 用于匹配单个空格符,包括tab键和换行符; \S 用于匹配除单个空格符之外的所有字符; \d 用于匹配从0到9的数字; \w 用于匹配字母,数字或下划线字符; \W...例如上一节中的([0-9]*)与([\d]*)作用相同 3. ()和re.search结合使用 re.search函数需要传入2个参数,第1个参数是正则表达式,第2个参数是要进行搜索的源字符串。...;参数为1时,为正则表达式匹配到的第1个小括号中的内容;参数为2时,为正则表达式匹配到的第2个小括号中的内容,依此类推。

    87520

    一文带你读懂:Google 和 JDK 的正则表达式引擎有何不同

    ,能够正常去匹配字符串,但是在我们的系统中却抛出异常信息,如下: 不同引擎的使用差异 于是我这边进行问题定位,发现是底层使用了 Google 的 Re2j 的正则表达式引擎,代码段如下: public...RE2 算法使用非确定性有限自动机在一次传递输入数据时同时探索所有匹配。...该方法接受一个正则表达式作为它的第一个参数。 Matcher 类: Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与Pattern 类一样,Matcher 也没有公共构造方法。...在最坏的情况下,java.util.regex匹配器可能永远运行,或者超过可用堆栈空间而失败;这在 RE2/J 中永远不会发生。...1)Lookaround包括Lookahead和Lookbehind两种匹配模式 (Lookahead检测的是后缀,而Lookbehind检测的是前缀,它们有 Positive、Negative 两种匹配方式

    1.6K30

    Python笔记(十):正则表达式

    正则表达式对比工具 https://pan.baidu.com/s/1XIPyF1vFSj5PACPx9zW8_g (一)      正则表达式符号和特殊字符 符号 说明 示例 | 或 re1|re2,...匹配re1或re2 ....\A 匹配字符串开始部分,\Z 则字符串结束部分 参照^ 和$ (二)      贪婪模式和非贪婪模式 贪婪模式:尽可能的匹配 非贪婪模式:匹配到第一个结果后就结束匹配。...(在内容和正则表达式匹配的情况下,尽可能的匹配最长字符串) 第二张图(非贪婪模式):匹配到第一个后就结束匹配了。(在内容和正则表达式匹配的情况下,匹配到第一个结果后就结束匹配) ? ?...匹配行的开始和结束部分,而不是严格匹配字符串本身的开始、结束部分 re.S re.DOTALL) 让.

    69650
    领券