C# 正则表达式模式位置和最后 3 个字符
本文关键字:字符 最后 正则表达式 模式 位置 | 更新日期: 2023-09-27 18:31:44
我正在尝试根据文件名创建一个新字符串。名称的一部分包含不相关的信息,例如当前年份。 例如D2015987.txt
.对我来说,正则表达式的重要部分是从文件名部分中提取D987
。
我开始使用Regex.Match(@"D'd{4}|'d{3}'b+")
,这似乎在我获得值时修剪了最后一个数字。实际上,我正在尝试从此值创建一个新字符串,因此我也可以使用string newStr = Regex.Replace(pattern).value ...
值将与此D11Q1987.txt ...
类似的模式,因此我还需要DQ987
部分。
提前感谢您的帮助。担
试试这个:模式^('w)'d+('d{3})'.txt$
替换为$1$2
现在,您根据 (C#) 语法在代码中使用此代码。 我希望这能奏效。C# 代码
using System.IO;
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
// This is the input string we are replacing parts from.
string input = "D2015987.txt";
// Use Regex.Replace to replace the pattern in the input.
string output = Regex.Replace(input, @"^('w)'d+('d{3})'.txt$", "$1$2");
// Write the output.
Console.WriteLine(input);
Console.WriteLine(output);
}
}
输出 C#
D2015987.txt
D987
另一个 PHP 解决方案
$str = "D2015987.txt";
preg_match($re, $str, $matches);
$r=$matches[1].$matches[2];
var_dump($r );
PHP 的输出
string 'D987' (length=4)
-
(.)
抢到第一个,捕获第 1 组 -
'd+
匹配任意数量的数字(但至少一个) -
([A-Za-z])
匹配单个字符,并将其捕获为组 1。 -
'd
匹配一位数。 -
('d{3})
匹配三位数字。 -
'.
逃脱了这个时期。 -
txt
完成它寻找文字字符 txt
正则表达式:
(.)'d+([A-Za-z])'d('d{3})'.txt
现在,如果最后一位数字的长度是可变的,但总是在数字前面,我们只需将{3}
更改为 +
.
(.)'d+([A-Za-z])'d('d+)'.txt
$1
包含 D(通过您的示例),"$2"包含 Q(通过您的示例),$3 包含 987,但这两个示例都依赖于前面有一个数字,我们可以将其用作标记但丢弃。