此正則表達式應該做的技巧,但你總是應該指定你使用的語言/框架,因爲並非所有的正則表達式引擎都支持相同的功能。
說明 要捕捉將成爲捕獲組#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
您還沒有指定已知的前綴是什麼,您應該小心地使用已知字符串(特別是句點,加號,星號,問號和括號)來轉義特殊字符。
我投票結束這個問題作爲題外話,因爲它要求一個現成的解決方案,並顯示沒有最小的努力。 – Maroun
所以基本上,你需要得到#號前的最後一個整數,我是否正確?你試過什麼了?你使用什麼語言? –
我曾嘗試使用在線工具(如http://www.regexr.com/),但對於初學者來說這太複雜了。我需要在#之前的最後一個整數,但只有在KnownString之後。另外,我需要用包含該整數的新序列替換整個序列。我必須在同一個正則表達式中這樣做。我甚至不知道這是否可能 – Don