`

提取指定模式的字符串

 
阅读更多

 

按照${xxx 固定字符串 xxx}$  提取数据.

采取的提取方式  (contractNo){1} 固定为一个

然后左边和右边都有一个无{和无}的字符串

 

        String desStr = "${sdsfddfs${0=房源序号, 1=序号,contractNo, 2=合同编号, 3=项目名称}$ ${aacontractNoa}$sddssdd}$";

        String regex = "\\$\\{[^(\\{\\})]*(contractNo){1}[^(\\{\\})]*\\}\\$";  //这个[^(\\{\\})] 排除不是很好理解修改成[^(\\{\\})]

 

 

String regex = "\\$\\{[^(\\{\\})]*(contractNo){1}[^(\\{\\})]*\\}\\$";

 

String regex = "\\{{1}[^\\{\\}]*?\\}{1}"; //提取{字符串} 格式的字符串

       

       

        Pattern mPattern = Pattern.compile(regex);

        Matcher mMatcher = mPattern.matcher(desStr);

       

        //System.out.println("\n");

        int j=0;

        while (mMatcher.find()) {

        j++;

        System.out.println("====ok==="+j);

            System.out.println(mMatcher.group());

 

        }

 

 

------------正则表达式贪婪与非贪婪模式

----------

之前做程序的时候看到过正则表达式的贪婪与非贪婪模式,今天用的时候就想不起来了,现在这里总结一下,以备自己以后用到注意。

1.什么是正则表达式的贪婪与非贪婪匹配

  如:String str="abcaxc";

    Patter p="ab*c";

  贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。如上面使用模式p匹配字符串str,结果就是匹配到:abcaxc(ab*c)。

  非贪婪匹配:就是匹配到结果就好,就少的匹配字符。如上面使用模式p匹配字符串str,结果就是匹配到:abc(ab*c)。

2.编程中如何区分两种模式

  默认是贪婪模式;在量词后面直接加上一个问号?就是非贪婪模式。

  量词:{m,n}:m到n个

     *:任意多个

     +:一个到多个

     ?:0或一个

3.程序实例

使用Snort的规则一条规则的一部分作为匹配文本,匹配出其中的content部分。

复制代码
 1 import java.util.regex.Matcher;
 2 import java.util.regex.Pattern;
 3 
 4 public class RegularTest {
 5     
 6     public static void main(String[] arg){
 7         String text="(content:\"rcpt to root\";pcre:\"word\";)";
 8         String rule1="content:\".+\"";    //贪婪模式
 9         String rule2="content:\".+?\"";    //非贪婪模式
10         
11         System.out.println("文本:"+text);
12         System.out.println("贪婪模式:"+rule1);
13         Pattern p1 =Pattern.compile(rule1);
14         Matcher m1 = p1.matcher(text);
15         while(m1.find()){
16             System.out.println("匹配结果:"+m1.group(0));
17         }
18         
19         System.out.println("非贪婪模式:"+rule2);
20         Pattern p2 =Pattern.compile(rule2);
21         Matcher m2 = p2.matcher(text);
22         while(m2.find()){
23             System.out.println("匹配结果:"+m2.group(0));
24         }
25     }
26 }
分享到:
评论

相关推荐

    [字符串]字符串提取(获取两个字符串中间的字符串)

    1. **IndexOf**:此方法用于查找指定字符串在当前字符串中的第一次出现位置。返回值是子字符串的起始索引,如果未找到则返回-1。 2. **Substring**:根据提供的起始索引和长度,截取字符串的一部分。 例如,假设...

    C#删除指定的字符串,C#提取指定字符串内容

    提取指定字符串内容则可以通过`IndexOf()`、`Substring()`以及正则表达式`Matches()`等方法实现。理解并熟练运用这些方法,可以有效地解决字符串处理的问题。在实际项目中,根据具体需求选择合适的方法至关重要。

    pb函数库之字符串操作函数

    其语法为Match(string, textpattern),其中string是指定要检查是否匹配指定模式的字符串,textpattern是指定文本匹配模式。返回值为一个布尔值,如果字符串string与模式textpattern相匹配,则函数返回TRUE,否则返回...

    一个php截取指定字符串之间的字符串的类

    然而,在某些复杂场景下,这些基础函数可能无法满足需求,例如需要截取两个标记之间的内容,或者需要在字符串中寻找多个特定模式。此时,自定义类就能派上用场,它可以通过封装复杂的逻辑,提供更高级别的抽象。 该...

    C#实现读取字符串特定位置数据

    在C#编程中,有时我们需要从字符串中提取特定位置或模式的数据,这通常可以通过使用正则表达式来实现。正则表达式是一种强大的文本处理工具,可以用来匹配、查找、替换和提取字符串中的模式。本篇文章将深入探讨如何...

    字符串的查找和提取

    使用正则表达式可以精确地提取字符串中的特定模式。`re.match()`或`re.search()`用于查找匹配的开始,`re.findall()`则用于找到所有匹配的部分。 4. JSON或XML解析: 在处理结构化数据时,如JSON或XML,需要使用...

    一个php截取指定字符串之间的字符串的类.zip

    这个PHP类设计的目标是截取两个指定字符串之间的子串。类可能包含以下主要方法: - `__construct()`: 构造函数,可能用于初始化类的属性,如起始和结束标识符。 - `setStartStr()`: 设置起始字符串。 - `...

    nodejs+字符串的模式匹配+正则表达式+判断获取字符串的某些需求

    本文将详细介绍如何在JavaScript中使用正则表达式进行字符串的模式匹配、提取以及替换。 #### 二、基本概念 正则表达式是一种由字符和特殊符号组成的语言,用于描述字符串的模式。在JavaScript中,正则表达式的创建...

    C#字符串和正则表达式参考手册

    `Regex.IsMatch(input, pattern)`判断输入字符串是否匹配指定模式。 4. 搜索与提取:`Regex.Match()`、`Regex.Matches()`和`Regex.Split()`分别用于查找第一个匹配项、所有匹配项以及根据模式分割字符串。 5. 替换...

    提取字符串中url域名

    ### 提取字符串中URL域名的方法解析 在互联网应用开发中,经常需要从一段文本或数据中提取出URL中的域名部分。这种需求常见于链接管理、网络安全检查、网站数据分析等多个领域。本文将详细介绍如何通过正则表达式的...

    pb函数库之字符串操作函数.docx

    该函数的语法为 Match(string, textpattern),其中 string 是要检查是否匹配指定模式的字符串,textpattern 是指定的文本匹配模式。函数执行成功时如果字符串 string 与模式 textpattern 相匹配,则函数返回 TRUE,...

    VB源码——查找特定位置字符串

    本段VB代码实现了一个功能:在给定的字符串(`instring`)中查找位于指定前缀(`after`)与后缀(`before`)之间的子字符串。该函数允许用户设定是否从字符串的开头重新开始搜索(`rewind`)。此功能适用于需要从...

    字符串查找,删除,提取

    3. **提取字符串中指定字符间的子串**: 提取特定字符之间的子串通常需要用到分隔符。例如,如果字符串是 "key1=value1;key2=value2",我们想要提取 "value1" 和 "value2",可以使用 `split()` 方法,以分号或等号...

    java 字符串 正则表达式 详细实例代码

    - 正则表达式是一种模式匹配工具,用于字符串搜索、替换和提取。Java中的`Pattern`和`Matcher`类用于处理正则表达式。 - `Pattern.compile(regex)`编译正则表达式为模式对象,`Matcher`对象通过`Pattern`对象的`...

    matlab 字符串识别

    `strsplit`函数是最常用的一种,它可以根据指定的分隔符将字符串拆分成多个子字符串。例如,如果你有一个由逗号分隔的字符串 'a,b,c',你可以通过`strsplit('a,b,c', ',')`将其拆分为{'a' 'b' 'c'}。若无分隔符,它...

    C#正则表达式大全, 判断字符串是否为正整数,中文,英文.....

    正则表达式是指用来描述字符串模式的表达式,通过使用正则表达式,我们可以轻松地实现字符串的匹配、验证、提取和替换等操作。在 C# 中,我们可以使用 System.Text.RegularExpressions 命名空间中的 Regex 类来实现...

    字符串任意提取.rar

    2. **正则表达式(Regular Expression)**:在处理字符串时,正则表达式是一种强大的工具,用于匹配、查找、替换符合特定模式的字符串。例如,要提取所有汉字,我们可以使用匹配汉字的正则表达式`\p{Han}`;要提取...

    Oracle拆分字符串,字符串分割的函数

    `substr()` 用于从字符串中提取指定长度的部分。例如,`substr(string, start_position, length)` 返回从`start_position`开始,长度为`length`的子串。结合`instr()`,可以逐个截取字符串的不同部分。 3. **...

    js字符串截取

    `replace()` 方法用于替换字符串中的某个模式(可以是字符串或正则表达式)。 ```javascript var result1 = a.replace(re, "Hello"); // result1 的值为 "Hello" var result2 = b.replace(re, "Hello"); // result2 ...

Global site tag (gtag.js) - Google Analytics