使用RegEx删除开始和结束模式

问题描述:

我需要解析此字符串。我需要从中提取"nabcn"。空格和"\n"是随机的,可以按任意顺序排列。注意:"\n"是文本不能转义的字符。使用RegEx删除开始和结束模式

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

这是我想出了:

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

这工作,但问题是它发现只有“ABC”。

+1

为什么不从输入中删除所有的空格和'\ n'? – anubhava

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

这工作:

(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