簡體   English   中英

此字符串的正則表達式模式

[英]Regex pattern for this string

我在匹配休止行中的某些字符串時遇到問題:

02-16 12:23:24.046  3068  3068 E AndroidRuntime:    at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:153) 
02-16 12:23:24.046  3068  3068 E AndroidRuntime:    at android.view.Window$LocalWindowManager.addView(Window.java:559)
02-16 12:23:24.046  3068  3068 E AndroidRuntime:    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2716)
02-16 12:23:24.046  3068  3068 E AndroidRuntime:    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2151)
02-16 12:23:24.046  3068  3068 E AndroidRuntime:    at android.app.ActivityThread.access$700(ActivityThread.java:140)
02-16 12:23:24.046  3068  3068 E AndroidRuntime:    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1238)
02-16 12:23:24.046  3068  3068 E AndroidRuntime:    at android.os.Handler.dispatchMessage(Handler.java:99)

我想在最后兩個'('')'字符之間匹配字符串。 我知道有很多正則表達式教程,但我還無法獲得。 我需要對此進行更多研究

因此,成功的結果應該是:

WindowManagerImpl.java:153
Window.java:559
ActivityThread.java:2716
ActivityThread.java:2151
and so on

我所知道的是,並非總是有單詞“ java”,因此我想在最后一個“(””)之間取值

謝謝大家的線索

假設該行中沒有其他括號,則可以執行以下操作:

\([^)]+\)

然后,您可以在比賽結束時修剪(和)。

或分組內部文本:

\(([^)]+)\)

然后使用match.Groups [1] .Value獲取內部組的值。

更新:@cabecao提醒我,如果文本始終顯示在末尾,並且可能還有其他括號,則在末尾添加“ $”以匹配行尾。

\([^)]+\)$

您可以使用:

var matches = Regex.Matches(input, @"(?<=\().*(?=\))");
foreach (Match item in matches)
{
    Console.WriteLine(item.Value);
}

應該這樣做:

(?<=\()[^)]+(?=\)$)

使用環視而不是捕獲組 ,可以更輕松地提取結果。 它將匹配一組非括號字符,在字符串末尾先跟一個,再跟一個。

我現在想到的最簡單的方法是:

.*\((.*)\)$

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM