正则表达式 捕获分组

string st = @"sdfs<202|303|8|808>108|8|998|8";

  string s = Regex.Replace(st, @"(?<left><)[0-9\|]*(?<right>>)", "${left}${right}", RegexOptions.IgnoreCase);

 

s的内容为"sdfs<>108|8|998|8"

 

(?<name>)可以定义一个分组,名称为那么,<name>后跟匹配符号,应用时可以使用${name} 或对应的$0-9的某一个

转载于:https://www.cnblogs.com/hdjjun/archive/2008/06/17/1223756.html

### 正则表达式分组的用法 正则表达式中的分组是一种用于捕获和提取字符串特定部分的强大工具。以下是有关正则表达式分组的具体说明及其示例。 #### 1. 基本概念 分组通过圆括号 `()` 定义,在匹配过程中,这些括号内的内容会被视为一个整体进行处理。每个分组会按照其在正则表达式中出现的顺序编号,第一个分组为第1组,第二个为第2组,依此类推[^2]。 #### 2. Python 中的分组示例 Python 的 `re` 模块支持正则表达式分组功能。下面是一个简单的例子: ```python import re pattern = r"(hello) (world)" str = "hello world" result = re.match(pattern, str) if result: print("Full match:", result.group(0)) # 输出整个匹配的内容 print("Group 1:", result.group(1)) # 输出第一个分组的内容 print("Group 2:", result.group(2)) # 输出第二个分组的内容 ``` 在这个例子中,`(hello)` 和 `(world)` 是两个独立的分组。调用 `group(1)` 返回的是第一个分组的内容 `"hello"`,而 `group(2)` 则返回第二个分组的内容 `"world"`[^3]。 #### 3. 命名分组 除了按位置索引外,还可以使用命名分组来提高可读性和维护性。命名分组的语法为 `(?P<name>...)`,其中 `<name>` 是自定义的名字。例如: ```python import re pattern = r"(?P<greeting>hello) (?P<target>world)" str = "hello world" result = re.match(pattern, str) if result: print("Greeting group:", result.group('greeting')) # 使用名字访问分组 print("Target group:", result.group('target')) ``` 此代码片段展示了如何利用命名分组更直观地获取匹配的部分[^4]。 #### 4. 非捕获分组 如果只需要组合某些模式而不希望将其作为单独的分组保存下来,则可以使用非捕获分组 `(?:...)`。这种情况下不会分配序号给该分组。例如: ```python import re pattern = r"(?:abc)+def" str = "abcdef" result = re.match(pattern, str) print(result.group()) # 只有 'abcdef' 被捕获,没有额外的分组 ``` 这里 `(?:abc)` 不会产生任何新的分组记录。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值