寻找一个正则表达式字符串,可以找到嵌入字符串中最右侧(如果有的话)的数字组。我们只关心连续的数字。我们不关心符号、逗号、小数点等。如果找到了这些,应该像字母一样被视为非数字。
这是为替换/增量目的而进行的,因此我们还需要获取检测到的数字之前和之后的所有内容,以便在增加值后重构字符串,所以我们需要一个标记化的正则表达式。
以下是我们要查找的示例:
- "abc123def456ghi" 应该识别出'456' - "abc123def456ghi789jkl" 应该识别出'789' - "abc123def" 应该识别出'123' - "123ghi" 应该识别出'123' - "abc123,456ghi" 应该识别出'456' - "abc-654def" 应该识别出'654' - "abcdef" 不应返回任何匹配项
例如,从名称“Item 4-1a”开始,提取出“1”,并将其前面的所有内容作为前缀,将其后面的所有内容作为后缀。然后,在代码循环中,我们可以使用它来生成值“Item 4-2a”、“Item 4-3a”和“Item 4-4a”。
现在,如果我要寻找第一组,这很容易。我只需要找到前缀中0个或多个非数字的第一个连续块,然后找到数字的1个或多个连续块,然后剩余的所有内容将成为后缀。
我遇到的问题是如何将前缀定义为包括除最后一组以外的所有(如果有的话)数字。无论我尝试什么样的前缀,它都会吞噬掉最后一组,即使我已经尝试通过基本上颠倒上述内容来将其锚定到结尾。
这是为替换/增量目的而进行的,因此我们还需要获取检测到的数字之前和之后的所有内容,以便在增加值后重构字符串,所以我们需要一个标记化的正则表达式。
以下是我们要查找的示例:
- "abc123def456ghi" 应该识别出'456' - "abc123def456ghi789jkl" 应该识别出'789' - "abc123def" 应该识别出'123' - "123ghi" 应该识别出'123' - "abc123,456ghi" 应该识别出'456' - "abc-654def" 应该识别出'654' - "abcdef" 不应返回任何匹配项
例如,从名称“Item 4-1a”开始,提取出“1”,并将其前面的所有内容作为前缀,将其后面的所有内容作为后缀。然后,在代码循环中,我们可以使用它来生成值“Item 4-2a”、“Item 4-3a”和“Item 4-4a”。
现在,如果我要寻找第一组,这很容易。我只需要找到前缀中0个或多个非数字的第一个连续块,然后找到数字的1个或多个连续块,然后剩余的所有内容将成为后缀。
我遇到的问题是如何将前缀定义为包括除最后一组以外的所有(如果有的话)数字。无论我尝试什么样的前缀,它都会吞噬掉最后一组,即使我已经尝试通过基本上颠倒上述内容来将其锚定到结尾。
Regex.Split()
将为a44b44c
提供3个标记,即a44b
、44
和c
。 - Devendra D. Chavan