Regex 使用正则表达式解析数据
我在使用正则表达式提取数据时遇到了问题,通常我可以很容易地做到,但我发现自己被困在了这里。我试图提取“n”之后和“end”之前的部分 我能得到的数据是Regex 使用正则表达式解析数据,regex,Regex,我在使用正则表达式提取数据时遇到了问题,通常我可以很容易地做到,但我发现自己被困在了这里。我试图提取“n”之后和“end”之前的部分 我能得到的数据是 jack. n n klln kjj kll end jane. n n kien wsdn end jone. n losn djs end jord. n sdjn sdkln end 现在“n”只能出现一到两次 我用这个提取了3美元 \(.+?\.) .*n.* (n|\s) (.*)
jack. n n klln kjj kll end
jane. n n kien wsdn end
jone. n losn djs end
jord. n sdjn sdkln end
现在“n”只能出现一到两次
我用这个提取了3美元
\(.+?\.) .*n.* (n|\s) (.*) end\
它适用于所有实例,但不适用于第3行。它所做的是,它还包括“losn”。
在所有情况下,都可能出现两个“n”或一个“n”。如果存在一个“n”,则“n”可以是远离我想要的数据的空间。或者很多空间之外。好的,没关系,我想我做到了 我改变了:
\(.+?\.) .*n.* (n|\s) (.*) end\
至(添加“?”以使辅助“n”可选):
我认为如果你用这样的东西来代替,会更安全:
^[^.]+\.\s*n(?:\s*n)?\s* (.*) end
使用
匹配“任意字符”可能会导致效率问题。因此,我建议对第一部分使用[^.]+
(或者如果第一部分也可以包含句点,+?
)
然后使用\s*
而不是\s*
并使用可选组(?:\s*n)?
作为可能的第二个n
^[^.]+\.\s*n(?:\s*n)?\s* (.*) end