2017-05-24 39 views
0

我需要在我的字符串中的第二個或最後一個點之後和結束的大括號之前找到任何模式,例如, @ {image.imagetext}在這裏命名組(action)應該是空的,並且在@ {image.imagetext.NoHtml}(我有很多像NoHtml這樣的動作),這裏命名組的結果應該是NoHtml。查找可變文本段中的最後一個模式

+0

你做的嘗試嗎? – anubhava

+0

是的,我想我現在:( @ {((?:?[^ \] *(?:\。[^ \] *)+))((?:?:\。 )[^}] *)?}) –

+0

新編輯的版本給出了行動小組 –

回答

1

您可以使用此正則表達式匹配行動的部分是後最後一個點提供有2個點之前。

(?<tag>@{(?<tagname>[^.]+)\.(?:[^.}]*\.)+(?<action>[^.}]+)}) 

RegEx Demo

+0

是否可以擴展標記名組以包含除動作組內容以外的所有字符? –

+0

我喜歡你的正則表達式解決方案,但我似乎尚未完成。首先它與@ {image.imagepath}模式不匹配,並且結束點不應位於標記組中。 –

+0

你可以試試這個正則表達式:['@ {( [^] +)\(?:?。?[^}] * \)* [^}] *?)\(? ? [^}] *)}'](https://regex101.com/r/Ii0jmO/5) – anubhava

0

這是我想要的正則表達式

(?<tag>@{(?<tagname>(?:[^\.]*(?:\.[^\.]*)+))(?:(?:\.)(?<acti‌​on>[^}]*))}) 
+0

[檢查你的正則表達式演示](https://regex101.com/r/Ii0jmO/3),這將是非常緩慢的(368步與我的正則表達式中的107步) – anubhava

相關問題