c#3-正则表达式提取字符串问题

问题描述

正则表达式提取字符串问题

110kV1#母分开关由运行改热备用(110kV1#母分备自投由信号改跳闸(1区),110kV1#母分保护由跳闸改信号(1区)),110kV1#母分开关由运行改热备用(110kV1#母分备自投由信号改跳闸(1区),110kV1#母分保护由跳闸改信号(1区))

上面符串括号都是半角中文状态,括号里面可能会嵌套N个括号和其他字符串,上面只是个例子

要求写出一对正则表达式,匹配最外层的括号里面的所有内容

如上面可以匹配到的字符串如下:
(110kV1#母分备自投由信号改跳闸(1区),110kV1#母分保护由跳闸改信号(1区))
(110kV1#母分备自投由信号改跳闸(1区),110kV1#母分保护由跳闸改信号(1区))

会匹配到两个字符串

解决方案

 static void RegexBalance()
        {
            string txt = @"110kV1#母分开关由运行改热备用(110kV1#母分备自投由信号改跳闸((1区)),110kV1#母分保护由跳闸改信号(1区)),110kV1#母分开关由运行改热备用(110kV1#母分备自投由信号改跳闸(1区),110kV1#母分保护由跳闸改信号(1区))";
            string patten = @"([^()]*(((?'op'()[^()]*)+((?'-op'))[^()]*)+)*(?(op)(?!))[^()]*)";
            Regex.Matches(txt, patten).Cast<Match>().ToList().ForEach(x =>
            {
                Console.WriteLine(x.Value);
            });
        }

解决方案二:

 ([sS]*?([sS]*?)[sS]*?))
时间: 2024-09-14 09:42:44

c#3-正则表达式提取字符串问题的相关文章

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

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

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

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

使用正则表达式提取字符串!

问题描述 helloworld:mynameistianyaMIME-Version:1.0Content-Type:Multipart/report;report-type=delivery-status;-----Content-Description:Deliveryerrorreport我想使用正则表达式c#提取:MIME-Version:1.0Content-Type:Multipart/report;report-type=delivery-status;应该怎么写? 解决方案 解决

如何用正则表达式提取字符串?

问题描述 [AL_Child][Cols=2]............[/AL_Child]我有这样一个字符串,用正则表达式怎么样能够提取出[AL_*****]--[/AL_*****]里面的字符串需要提取出来的字符串包括:1,AL_后面(星号)的字符串:2,AL标签里面(省略号)的字符串请大家帮帮忙,谢谢了.Stringsrc=............;//原串Stringstr="[AL\((.*?)\)]([\s\S]*?)[\/AL\((.*?)\)]";Patternp=Pa

php正则表达式提取字符串中的数字例子

今天开发采集器,用到从字符串里取数字,后来想到了以下用正则表达式来取. 用正则  代码如下 复制代码 $str = ereg_replace('[^0-9]',",$str);和 $str = preg_replace( '/[^\d]/ ', ' ',$str); 例子  代码如下 复制代码 function findNum($str=''){ $str=trim($str); if(empty($str)){return '';} $reg='/(\d{3}(\.\d+)?)/is';//匹

JS正则表达式提取字符串中所有汉字的脚本

在网上发现有人用vbscript正则表达式实现了这个功能,但代码很厂,偶改成js的了,很短的一段代码: <script type="text/javascript"> var str="怎样从一个Html页面中提取所有汉字呢?不能有其它Html代码."; alert(str.replace(/[^\u4e00-\u9fa5]/gi,"")); </script> [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

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

JS正则表达式提取字符串中所有汉字的脚本_正则表达式

在网上发现有人用vbscript正则表达式实现了这个功能,但代码很厂,偶改成js的了,很短的一段代码: [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 这里的关键是汉字escape后的编码范围是\u4e00-\u9fa5,知道这个问题就好解决了.

java中正则表达式提取字符串中日期实现代码

你可能需要从一段字符串String或者文本中抽取出或者说是过滤出日期或者时间,可以使用如下程序:  代码如下 复制代码 public String run(String text) {         String dateStr = text.replaceAll("r?n", " ");         dateStr = dateStr.replaceAll("\s+", " ");                   

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;