2016-07-26 94 views
-4

我做搜索之前並在記事本++替換並正在尋找一個正則表達式,將字面上給我的第一(一個給定的字符串,這樣我就可以取代它。正則表達式 - 匹配第一次出現字符串中,不返回任何它

我不感興趣的任何之前或之後的字符,真的只是第一(

的示例串是:

"starLan(11), -- Deprecated via RFC3635 ethernetCsmacd (6) should be used instead 

我想找到第一((在這種情況下,近starLan(11)),所以我可以用別的東西代替這個角色。

它不應該在同一行中匹配任何其他(,所以在這種情況下,它不應該與(6)附近的第二個(匹配。

所有我遇到的例子似乎回到了一切和包括給定的字符,這是不是我在這種情況下,後是。

+0

那麼,爲什麼*返回一切直至幷包括給定CHARACT呃*有問題?你有沒有聽說過捕獲組和反向引用? –

+0

我沒有,也許這可能是一個更簡單的方法,你可以進一步解釋嗎? – cogumel0

+0

它是如此簡單,你可以看到2個答案和更多來我猜。 –

回答

1

我將匹配以下模式:

^([^(]*)\((.*)$ 

而與此替換它:

\1X\2 

哪裏X是您希望(與替換的文本。

它採用反向引用之前和第一(後,指部分。


編輯:如由OP所提到的,匹配^([^(]*)\(並用\1X替換就足夠了。

+0

可以簡化爲'^([^(] *)\('和替換部分到'\ 1X',但是效果很好,謝謝! – cogumel0

+0

確實,我擔心替換全部可能會替換多行中的一行,但前導'^'禁止這個。 – Aaron

-1

可以使用)內捕獲在這個

^(.*?)\(

文本(將在後面引用$ 1個可用。這樣你就可以取代它想:

$1someText 

其中someText是要落實到位刪除文本「(」

,如果你想以後刪除文本「(」保持不動爲好,你可以使用:

^(.*?)\((.*) 

和替換爲:

$1someText$2 
+0

這匹配最後一個'('在字符串中。 – cogumel0

+0

@ cogumel0 [請檢查此](https://regex101.com/r/tC8nB7/3),我剛剛檢查了它在記事本++也可以發表任何鏈接,以顯示它不工作? –

+0

我更新了以前的鏈接顯示匹配與我的答案爲文本後刪除'('。似乎也在工作,無論是在regex101和記事本++。if你可以驗證它是否正常工作,你是否請刪除downvote。 –

相關問題