2017-05-18 100 views
-1

我想弄清楚如何編寫一個C#& Javascript正則表達式來替換字符串中的連字符,但只保留旁邊的字母數字。我不是正則表達式的專家,需要編寫一個幫助。我曾嘗試以下:C#&Javascript正則表達式只保留連字符旁邊的字母數字字符

(^([a-z0-9])-)+ | (^-([a-z0-9]))+ 

C#:

string UpdatedString = System.Text.RegularExpressions.Regex.Replace("- gomez-rodriguez - test1- -test2 -", @"(^([a-z0-9])-)+ | (^-([a-z0-9]))+", " "); 

例如,如果字符串是像

「 - 戈麥斯 - 羅德里格斯 - test1- -test2 - 」,

我需要被替換的字符串看起來像

「gomez-rodriguez test1- -test2」。

在Javascript上,我正在使用替換函數。

+0

代碼?使用Regex.Replace?什麼是你的替代模式?錯誤?例外?碼? –

+0

是的,我正在使用regex.replace替換獨立的連字符與空格。我沒有收到錯誤。我在撰寫表達時遇到困難。以下是我的代碼行:string UpdatedString = System.Text.RegularExpressions.Regex.Replace(「 - gomez-rodriguez - test1- -test2 - 」,@「(^([a-z0-9]) - )+ |(^ - ([a-z0-9]))+「,」「); – DanPal

+0

歡迎來到Stack Overflow。請閱讀[指導方針](https://stackoverflow.com/help/mcve)以創建最小,完整和可驗證的問題。 – Toby

回答

0

您可以使用模式:

*(?<!\w)-(?!\w) * 

這將在開始或您的字符串的結尾留出空間,雖然如此,你可以得到一個Trim()擺脫它:

string inputString = "- gomez-rodriguez - test1- -test2 -"; 
string pattern = @" *(?<!\w)-(?!\w) *"; 
string updatedString = Regex.Replace(inputString, pattern, " ").Trim(); 

Regex101 In Action

+0

感謝Abion47的幫助。這工作! – DanPal

0

您是否嘗試過使用像Microsoft這樣的正則表達式摘要:Regular Expression Language - Quick Reference在線正則表達式解析器。

Goolge搜索將返回許多好的正則表達式解析器。使用解析器,您可以輸入一些示例文本,然後輸入正則表達式。當你實時看到比賽時,它應該真的加速發展。

我知道這不是您的具體問題的答案,但希望這是一種您將在未來找到幫助的方法。

+0

謝謝Shimeon,我一直在使用https://regex101.com/,這是我在Google搜索解決方案時發現的。 – DanPal

相關問題