Regex 正则表达式替换前缀和后缀

Regex 正则表达式替换前缀和后缀,regex,Regex,我想构建一个正则表达式来替换字符串的前缀和后缀。通用字符串是从 已知前缀字符串 一些字母a-z或a-z 包含字母、连字符、反斜杠、斜杠和数字的未知字符串 连字符 整数 符号# 一串字母 示例: KnownStringr/df-2e\d-3724#.Gkjsu KnownStringEd\e4v-bn-824#.YKfg KnownStringa-YK224E\yy-379924#.awws 我想替换号码的前缀和后缀,以便获得: MyPrefix3724MyPostfix MyPrefix824

我想构建一个正则表达式来替换字符串的前缀和后缀。通用字符串是从

  • 已知前缀字符串
  • 一些字母a-z或a-z
  • 包含字母、连字符、反斜杠、斜杠和数字的未知字符串
  • 连字符
  • 整数
  • 符号#
  • 一串字母
  • 示例:

    KnownStringr/df-2e\d-3724#.Gkjsu
    KnownStringEd\e4v-bn-824#.YKfg
    KnownStringa-YK224E\yy-379924#.awws
    
    我想替换号码的前缀和后缀,以便获得:

    MyPrefix3724MyPostfix
    MyPrefix824MyPostfix
    MyPrefix379924MyPostfix
    

    这个正则表达式应该可以做到这一点,但是您应该始终指定您正在使用的语言/框架,因为并非所有正则表达式引擎都支持相同的特性

    您要捕获的数字将位于捕获组#3(
    (\d+)
    )中,大多数语言将其称为\3

    (?:KnownString)([a-zA-Z])(.*?)-(\d+)\#\.[a-zA-Z]+
    
    说明:

     (?:                     # Opens NCG
         KnownString         # Literal KnownString
     )                       # Closes NCG
     (                       # Opens CG1
         [a-zA-Z]            # Character class (any of the characters within)
                               # Anything between a and z
                               # Anything between A and Z
     )                       # Closes CG1
     (                       # Opens CG2
         .*?                 # . denotes any single character, except for newline
                               # * repeats zero or more times
                               # ? as few times as possible
     )-                      # Closes CG2
                               # Literal -
     (                       # Opens CG3
         \d+                 # Token: \d (digit)
                               # + repeats one or more times
     )                       # Closes CG3
     \#                      # Literal #
     \.                      # Literal .
     [a-zA-Z]+               # Character class (any of the characters within)
                               # Anything between a and z
                               # Anything between A and Z
                               # + repeats one or more times
    

    您还没有指定已知前缀是什么,您应该小心地转义已知字符串中的特殊字符,特别是句号、加号、星号、问号和括号。

    我投票将此问题作为离题题题结束,因为它要求的是现成的解决方案,并且没有显示出最小的努力。因此基本上,你需要得到#号前最后一个整数,对吗?到目前为止你试过什么?你用什么语言?我试过使用在线工具,如,但对初学者来说太复杂了。我确实需要#之前的最后一个整数,但前提是它在KnownString之后。另外,我需要用包含该整数的新序列替换整个序列。我必须在同一个正则表达式中这样做。我甚至不知道这是否可能当你询问正则表达式标记时,你应该总是指定一种语言。不仅是因为口味的不同(这不是一个特殊搭配的问题),而且替换的方法也因语言而异。