簡體   English   中英

短碼正則表達式

[英]Short Code Regex

我寫了一個正則表達式來匹配類似於以下格式的短代碼:

[playername Le'Veon Bell]

這是正則表達式:

\[playername\s+(?<name>[\w \-\'\’]+)\s*\]

我知道正則表達式正在與玩家名稱中的單引號斗爭。 我在這里測試了正則表達式它似乎工作,但是當我從我的網絡應用程序運行代碼時找不到匹配。

根據您提供的信息我相信\\[playername\\s+(?<name>[^]]+?)\\s*\\]應該有效。

唯一的區別是在捕獲組[^]]+其是不屬於任何字符匹配] 這將有效地捕獲[playername直到第一個 ]之后的任何內容。 如果你有嵌套括號,它會破壞。

您可以使用以下正則表達式:

\[playername\s+(?<name>.*?)\s*\]

現場演示

對於此示例,您不需要轉義-'字符類中存在'符號。

Regex rgx = new Regex(@"\[playername\s+(?<name>[\w '’-]+?)\s*\]");

IDEONE

如果不了解你的情景,那肯定很難說,但是從你所得到的,我會說你應該轉向更像這樣的東西?

\[playername\s+(?<name>[^\]\s]*)\s+\]

這將匹配任何沒有方括號或空格的東西,所以它看起來就像你真正想做的那樣。 我個人很想刪除空白條件,只是因為名字可能有空格。 你可以隨時調用你的語言版本的C#的string.Trim()是事后的。

當然,請注意,它與您正在做的事情並不完全相同:您明確地限制了字符。 但看起來你似乎試圖限制任何文本。

暫無
暫無

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

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