c# - 简单文本的正则表达式模式

标签 c# regex

我有一些从 PDF 文件转换而来的文本,现在我需要使用正则表达式从文本中获取特定内容。过去我使用索引和数学来获得特定的长度

这是我的文字:

1ZW6897X0327621544

每个都以 1Z 开头,长度为 18 个字符。

我尝试去 Regexr.com 寻求帮助,但它根本没有任何意义:

1Z[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]

这就是我的大脑处理我正在阅读的内容的方式,1Z 是开始,然后是接下来的 16 个位置的任何字符 0-9

有人可以帮忙吗?

最佳答案

您可以使用

\b1Z[A-Z0-9]{16}\b

或者

\b1Z\w{16}\b

请参阅regex demo

详细信息

  • \b - 单词边界
  • 1Z - 文字子字符串
  • [A-Z0-9]{16} - 16 个大写 ASCII 字母和/或数字(请注意, \w 将匹配任何字母、数字和/或 _,如果您不传递 RegexOptions.ECMAScript ,它将匹配所有 Unicode 字母/数字,以及更多“有趣的”符号)
  • \b - 单词边界。

如果边界是空格(即匹配项预计以字符串或空格开头,后面以字符串或空格结尾),则可以使用 (?<!\S)1Z[A-Z0-9]{16}(?!\S)改为模式。

在 C# 中,您可以将其与 Regex.Matches 一起使用:

var results = Regex.Matches(s, @"\b1Z[A-Z0-9]{16}\b")
        .Cast<Match>()
        .Select(m => m.Value)
        .ToList();

关于c# - 简单文本的正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51486620/

相关文章:

html - RegEx 匹配打开的标签,XHTML 自包含标签除外

c# - 如何制作一个适用于多种形式的变量?

c# - 验证递归字符串结构

c# - 如何判断文件是否已*完全*写入

java - 检查Java中字符串中特定符号的特殊排列

c++ - 如何编写正则表达式以匹配以下数字格式?

c# - 结合来自数据库的 3 个文本来填充组合框

c# - 如何指定不实现特定接口(interface)的类型参数?

regex - sed/正则表达式 : How to match a '<' or '>' in a string

javascript - 使用正则表达式从字符串中提取两位数