是否可以跳過捕獲組中正則表達式中的幾個字符?我正在使用.NET正則表達式,但這無關緊要?;旧?,我正在尋找的是:[隨機文本] AB-123 [隨機文本]并且我需要不帶連字符的情況下捕獲“ AB123”。我知道AB是2或3個大寫字符,而123是2或3個數字,但這不是很難的部分。困難的部分(至少對我而言)是跳過連字符。我想我可以分別捕獲它們,然后在代碼中將它們連接起來,但是我希望我有一個更優雅的,僅用于正則表達式的解決方案。有什么建議么?
3 回答

拉丁的傳說
TA貢獻1789條經驗 獲得超8個贊
您的斷言,如果沒有分組再加上它,就不可能做到這一點是正確的。
您也可以像Jeff-Hillman一樣,只在事發之后剔除壞角色。
這里要注意的重要一點是,您“不要對所有內容都使用正則表達式”。
正則表達式是為不太復雜的問題而設計的,用于不太復雜的解決方案,您不應該對所有內容都使用“哦,我們將使用正則表達式”,并且您不應習慣于認為自己可以通過簡單的方法解決問題。一步式正則表達式。
當存在可行的可行方法時,請務必使用它。
如果您恰巧需要在代碼體中返回多個匹配項,則可以使用另一種想法,即尋找基于語言“回調”的正則表達式,該表達式允許將任何匹配/找到的組傳遞給可以進行內聯替換的函數調用。(在執行regexp時特別方便)。
不知道它如何在.Net中工作,但是在php中您會做類似的事情(不是精確的代碼)
function strip_reverse( $a )
{
$a = preg_replace("/-/", "", $a );
return reverse($a);
}
$b = preg_replace_callback( "/(AB[-]?cde)/" , 'strip_reverse' , "Hello World AB-cde" ;
- 3 回答
- 0 關注
- 1111 瀏覽
添加回答
舉報
0/150
提交
取消