利用正则表达式提取固定字符之间的字符串

前言

在JS的正则零宽断言匹配中,只支持前瞻匹配,不支持后瞻。这就尴尬了,因为在业务当中,我们大多时候是知道了要目标数据的前后缀字符串,但是并不想连同前后缀一起获取。

为了模拟后瞻,我想,要不就用笨方法,先将前后缀字符串一同提取,然后再讲前后缀字符串一同replace为空字符串。于是就有了下面这个简单的方法,但确实很实用:

示例代码如下

// 提取固定字符之间的字符串 function getInnerString(source, prefix, postfix) { var regexp = new RegExp(encodeReg(prefix) + '.+' + encodeReg(postfix), 'gi'); var matches = String(source).match(regexp); var formatedMatches = _.map(matches, value => { return value .replace(prefix, '') .replace(postfix, ''); }); return formatedMatches; } //转义影响正则的字符 function encodeReg(source) { return String(source).replace(/([.*+?^=!:${}()|[\]/\\])/g,'\\$1'); }

使用:

var a = '让我们荡起双桨吧'; getInnerString(a, '让我们', '吧'); // ['双桨'] var b = '老总和不在办公室,有事请留言给李秘书'; getInnerString(b, '有事请留言给', ''); // ['李秘书']

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

时间: 2024-08-02 12:13:18

利用正则表达式提取固定字符之间的字符串的相关文章

python利用正则表达式提取字符串_python

前言 正则表达式的基础知识就不说了,有兴趣的可以点击这里,提取一般分两种情况,一种是提取在文本中提取单个位置的字符串,另一种是提取连续多个位置的字符串.日志分析会遇到这种情况,下面我会分别讲一下对应的方法. 一.单个位置的字符串提取 这种情况我们可以使用(.+?)这个正则表达式来提取. 举例,一个字符串"a123b",如果我们想提取ab之间的值123,可以使用findall配合正则表达式,这样会返回一个包含所以符合情况的list. 代码如下: import re str = "

Java利用正则表达式提取字符串中有用的信息

最近开发过程中碰到一个问题,就是将网页通过流读进内存然后记录表单中各个属性的id值. 例如:将<input type='text' id='baijinshan' name='baijinshan' >的id记录下来 java代码 package cn.bai.test; import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexTest { /** * @param args */ pu

ASP.NET利用正则表达式提取字符串中的数字

一言不足以毕之,请LOOK代码:               string text = " 订单5|本次付款:4783|本单结清,";             string pat = @"(\d+)";             Regex r = new Regex(pat, RegexOptions.IgnoreCase);             Match m = r.Match(text);             int matchCount = 0;

php 截取指定2个字符之间的字符串例子

使用方法  代码如下 复制代码 $keyword='查找(计组实验)' $need=getNeedBetween($keyword, '(' , ')' ); 那么$need='计组实验'; 先来发一个我在开发的时候经常用到的字符串截取函数.函数完成简单的从字符串($kw)截取两个指定的字符($mark1,$mark2)之间字符串,失败返回0,成功返回截取的字符串.  代码如下 复制代码 <?php function getNeedBetween($kw1,$mark1,$mark2){ $kw

java中 利用正则表达式提取( )内内容_java

昨天遇到一个小问题,需要批量处理一些用户,而前台传来的用户格式如下,要提取括号中间的内容(不带括号) 教师10(0010)教师11(0011)教师9(009)教师12(0012)教师13(0013)教师14(0014) 本来想用java的String.split()和substring()来搞定,但是需要处理多次比较麻烦,就用正则表达式了.虽然语法忘得差不多了,但是印象中用断言比较方便(关键希望结果不带括号).打开RegexBuddy试了下,轻松搞定:下边是java实现代码: 复制代码 代码如下

java-如何在JAVA中,在一个位置长度字符串中,取某固定字符后固定位数的字符?

问题描述 解决方案 先用string.split("固定字符"):分割出来固定字符后的字符串 再用 string.substring("开始位置","结束位置")截取固定位数 解决方案二: 正则表达式,比如 tdose:(0.d+) 解决方案三: 首先获取固定字符第一次出现的位置,然后再截取该位置到该位置+固定位置的字符串 1.int a = s1.indexOf("固定字符"): 2. s1.substring(a,a+固定

php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符

 PHP使用正则表达式提取字符串中尖括号<>.小括号().中括号[].大括号{}中的字符示例,需要的朋友可以参考下    代码如下: $str="你好<我>(爱)[北京]{天安门}";    echo f1($str); //返回你好  echo f2($str); //返回我  echo f3($str); //返回爱  echo f4($str); //返回北京  echo f5($str); //返回天安门    function f1($str)  { 

Java正则表达式提取字符

需求:提取车牌号中最后一个数字,如:宁A7865提取5,宁A876X提取6 实现方法: import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test { public static void main(String[] args) { String s = "A876X"; // 把要匹配的字符串写成正则表达式,然后要提取的字符使用括号括起来 // 在这里,我们要提取最后一个数字,正则

Java正则表达式提取字符的方法实例_正则表达式

正好遇到一个需求需要将字符串中特定的字符全部提取出来,这个如果是按常规的字符串处理的话非常的繁琐.于是想到用正则表达式来完成.项目需求是这样的:需要提取车牌号中最后一个数字,比如说:苏A7865提取5,苏A876X提取6 实现方法: import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test { public static void main(String[] args) { String s