2017-08-04 61 views
0

我需要解析此字符串。我需要從中提取"nabcn"。空格和"\n"是隨機的,可以按任意順序排列。注意:"\n"是文本不能轉義的字符。使用RegEx刪除開始和結束模式

"nabcn"可以有任何字符,包括換行符。我的要求是在所需文本前後不要有空格和"\n"字符串的組合。

這是我想出了:

(?=[^\s(?:\\n)])((?:(?:.|\n)*)?)(?<=[^\s(?:\\n)]) 

這工作,但問題是它發現只有「ABC」。

+1

爲什麼不從輸入中刪除所有的空格和'\ n'? – anubhava

回答

0

Here's what I came up with

(?:\\n)(\w+) 

這應該捕捉1組nabcn可以在上面下的「詳細信息」的鏈接Regexr看到這個。

第一個parenentheses指定一個非捕獲組尋找\n,第二個尋找單詞\w貪婪。

+0

僅適用於此特定所需文本。嘗試在nabcn之間添加一些空格和「\ n」。例如 - \ n \t \t \ n \ nna \ n bcn \ n \ n 只給了我'na'。它應該提取'na \ n bcn' – yuva

0

這工作:

(n)(?:\s|\\n)*(a)(?:\s|\\n)*(b)(?:\s|\\n)*(c)(?:\s|\\n)*(n) 

測試:

\n  \nnabcn  \n  \n 

https://regex101.com/r/SPH5mI/1

 \n  \n\n n\n\n\n\nab  c\n\n\n\nn  \n  \n 

https://regex101.com/r/ezUGes/1

,因爲它創造儘可能多克因爲「nabcn」中有字符(what does that word mean anyway?),因此檢索該單詞只需獲得組$1$2$3$4$5

+0

謝謝你的出色工作。但請記住我在我的問題中提到 - 「nabcn」可以包含任何字符,包括換行符。您的解決方案因' \ n \ nabkcn \ n \ n'而失敗。這不僅僅是'nabcn'。從開始和結束刪除所有空格和「\ n」後,該字符串可以簡單地包含任何數字,符號,單詞,轉義字符,任何東西。 – yuva

+0

我很抱歉我錯過了答案中的註釋。我不能假設「nabcn」具體是一個已知的字符串,它可以是任何東西。我只想從它的開始和結束中刪除空格和「\ n」字符串。 – yuva

相關問題