我有一些从 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/