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部分。

提前感谢您的帮助。担

C# 正则表达式模式位置和最后 3 个字符

试试这个:模式^('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. (.)抢到第一个,捕获第 1 组
  2. 'd+匹配任意数量的数字(但至少一个)
  3. ([A-Za-z])匹配单个字符,并将其捕获为组 1。
  4. 'd匹配一位数。
  5. ('d{3})匹配三位数字。
  6. '.逃脱了这个时期。
  7. txt完成它寻找文字字符 txt

正则表达式:

    (.)'d+([A-Za-z])'d('d{3})'.txt

现在,如果最后一位数字的长度是可变的,但总是在数字前面,我们只需将{3}更改为 + .

    (.)'d+([A-Za-z])'d('d+)'.txt

$1包含 D(通过您的示例),"$2"包含 Q(通过您的示例),$3 包含 987,但这两个示例都依赖于前面有一个数字,我们可以将其用作标记但丢弃。