在 Visual Studio (vsCode) 中使用正则表达式

发布时间:2020-02-02 阅读 4324

Stata 连享会   主页 || 视频 || 推文

温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。

课程详情 https://gitee.com/arlionn/Course   |   lianxh.cn

课程主页 https://gitee.com/arlionn/Course

Source在 Visual Studio 中使用正则表达式

Visual Studio 使用 .NET 正则表达式 来查找和替换文本。


正则表达式示例

下表包含一些正则表达式字符、运算符、构造和模式示例。 有关更完整的参考,请参阅正则表达式语言

目标 表达式 示例
与任何单个字符匹配(换行符除外)。 有关详细信息,请参阅任意字符 a.o 匹配"around"中的"aro"和"about"中的"abo",但不匹配"across"中的"acro"
零次或多次匹配前面的表达式(匹配尽可能多的字符)。 有关详细信息,请参阅零次或多次匹配 * a*r 匹配"rack"中的"r","ark"中的"ar"和"aardvark"中的"aar"
零次或多次匹配任何字符。 .* c.*e 匹配"racket"中的"cke","comment"中的"comme"和"code"中的"code"
一次或多次匹配前面的表达式(匹配尽可能多的字符)。 有关详细信息,请参阅一次或多次匹配 + e+d 匹配"feeder"中的"eed"和"faded"中的"ed"
一次或多次匹配任何字符。 .+ e.+e 匹配"feeder"中的"eed",但在"feed"中未找到匹配项
零次或多次匹配前面的表达式(匹配尽可能少的字符)。 有关详细信息,请参阅零次或多次匹配(惰性匹配) *? 由于是惰性匹配,\w*?d 匹配"faded"中的"fad"和"ed"而不是"faded"整个词
一次或多次匹配前面的表达式(匹配尽可能少的字符)。 有关详细信息,请参阅一次或多次匹配(惰性匹配) +? e\w+? 匹配"asleep"中的"ee"和"faded"中的"ed",但在"fade"中未找到匹配项
将匹配字符串定位到行或字符串的开头 ^ ^car 仅在出现于行开头时才匹配单词"car"
将匹配字符串定位到行尾 \r?$ car\r?$ 仅匹配位于行末的"car"
将匹配字符串定位到文件末尾 $ car$ 仅匹配位于文件末尾的"car"
匹配集中的任何单个字符 [abc] b[abc] 匹配"ba"、"bb"和"bc"
匹配的字符范围中的任意字符 [a-f] be[n-t] 匹配"between"中的"bet"、"beneath"中的"ben"和"beside"中的"bes",但在"below"中未找到匹配项
捕获包含在括号中的表达式并对其进行隐式编号 () ([a-z])X\1 匹配"aXa"和"bXb",但不匹配"aXb"。 "\1"指第一个表达式组"[a-z]"。 有关详细信息,请参阅捕获组和替换模式
使匹配无效 (?!abc) real(?!ity) 匹配"realty"和"really"中的"real",但不匹配"reality"。 它还可找到"realityreal"中的第二个"real"(而非第一个"real")。
与不在给定字符集中的任意字符匹配。 有关详细信息,请参阅负字符组 [^abc] be[^n-t] 匹配"before"中的"bef"、"behind"中的"beh"和"below"中的"bel",但在"beneath"中未找到匹配项
与符号前或符号后的表达式匹配 | (sponge|mud) bath 匹配"sponge bath"和"mud bath"
对反斜杠后面的字符进行转义 \ \^ 匹配字符 ^
指定前面的字符或组的出现次数。 有关详细信息,请参阅 n 次完全匹配 {n},其中"n"是出现次数 x(ab){2}x 匹配"xababx" x(ab){2,3}x 匹配"xababx"和"xabababx",但不匹配"xababababx"
匹配 Unicode 类别中的文本。 有关 Unicode 字符类的详细信息,请参阅 Unicode 标准 5.2 字符属性 \p{X},其中"X"是 Unicode 数字。 \p{Lu} 匹配"Thomas Doe"中的"T"和"D"
与字边界匹配 \b(在字符类外部,\b 指定字边界,而在字符类内部,\b 指定退格符。) \bin 匹配"inside"中的"in",但在"pinto"中未找到匹配项
与换行符(即新行后跟回车)相匹配 \r?\n 仅当"End"是一行的最后一个字符串,且"Begin"是下一行的第一个字符串时,End\r?\nBegin 才匹配"End"和"Begin"
与任何单词字符匹配 \w a\wd 匹配"add"和"a1d",但不匹配"a d"
与任何空格字符匹配 \s Public\sInterface 匹配词组"Public Interface"
与任何十进制数字字符匹配 \d \d 匹配"wd40"中的"4"和"0"。

\b0[xX]([0-9a-fA-F]+\)\b 是一个组合部分运算符和构造来匹配十六进制数字的示例正则表达式。 该表达式匹配"0xc67f",但不匹配"0xc67g"。

提示

在 Windows 操作系统中,大多数行以"\r\n"(回车符后跟新行)结束。 这些字符不可见,但存在于编辑器中且被传递到 .NET 正则表达式服务中。

捕获组合和替换模式

捕获组描述正则表达式的子表达式并捕获输入字符串的子字符串。 可以在正则表达式本身中使用捕获的组(例如,查找重复的单词),或者以替换模式使用捕获的组。 有关详细信息,请参阅正则表达式中的分组构造

要创建带编号的捕获组,请在正则表达式模式中用圆括号将子表达式括起来。 捕获按正则表达式中左括号的位置从左到右自动编号。 要访问捕获的组:

  • 在正则表达式中:请使用 \number。 例如,正则表达式 (\w+)\s\1 中的 \1 引用第一个捕获组 (\w+)
  • 在替换模式中:请使用 $number。 例如,已分组的正则表达式 (\d)([a-z]) 定义了两个组:第一个组包含一个十进制数字,第二个组包含一个 a 到 z 之间的字符 。 该表达式在以下字符串中查找四个匹配项:1a 2b 3c 4d 。 替换字符串 z$1 仅引用第一个组($1),并将该字符串转换为 z1 z2 z3 z4 。

下图显示了正则表达式 (\w+)\s\1 和替换字符串 $1。 正则表达式和替换模式均引用自动编号为 1 的第一个捕获组。 在 Visual Studio 中选择"快速替换"对话框中的"全部替换"时,会删除文本中的重复单词 。

"快速替换"显示 Visual Studio 中编号的捕获组
"快速替换"显示 Visual Studio 中编号的捕获组

提示

确保选中"快速替换"对话框中的"使用正则表达式"按钮 。

命名的捕获组

可以为捕获组命名,而不依赖于捕获组的自动编号。 命名的捕获组的语法为 (?subexpression)

命名的捕获组(类似于编号的捕获组)可在正则表达式本身中使用,也能以替换模式使用。 要访问命名的捕获组:

  • 在正则表达式中:请使用 \k。 例如,正则表达式 (?\w+)\s\k 中的 \k 引用名为 repeated 且其子表达式为 \w+ 的捕获组。
  • 在替换模式中:请使用 ${name}。 例如 ${repeated}

例如,下图显示了正则表达式 (?\w+)\s\k 和替换字符串 ${repeated}。 正则表达式和替换模式均引用名为 repeated 的捕获组。 在 Visual Studio 中选择"快速替换"对话框中的"全部替换"时,会删除文本中的重复单词 。

"快速替换"显示 Visual Studio 中的命名捕获组
"快速替换"显示 Visual Studio 中的命名捕获组

提示

确保选中"快速替换"对话框中的"使用正则表达式"按钮 。

有关命名的捕获组的更多信息,请参阅命名匹配的子表达式。 有关在替换模式中使用的正则表达式的详细信息,请参阅正则表达式中的替代

请参阅

相关课程

连享会-直播课 上线了!
http://lianxh.duanshu.com

免费公开课:


课程一览

支持回看,所有课程可以随时购买观看。

专题 嘉宾 直播/回看视频
最新专题 DSGE, 因果推断, 空间计量等
Stata数据清洗 游万海 直播, 2 小时,已上线
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
面板模型 连玉君 直击面板数据模型 [免费公开课,2小时]

Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。


关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。直播间 有很多视频课程,可以随时观看。
  • 连享会-主页知乎专栏,300+ 推文,实证分析不再抓狂。
  • 公众号推文分类: 计量专题 | 分类推文 | 资源工具。推文分成 内生性 | 空间计量 | 时序面板 | 结果输出 | 交乘调节 五类,主流方法介绍一目了然:DID, RDD, IV, GMM, FE, Probit 等。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法

连享会主页  lianxh.cn
连享会主页 lianxh.cn

连享会小程序:扫一扫,看推文,看视频……

扫码加入连享会微信群,提问交流更方便

✏ 连享会学习群-常见问题解答汇总:
https://gitee.com/arlionn/WD