我发现了一些类似的问题 R - Select string text between two values,regex for n characters or at least m characters, 但我仍然遇到麻烦
说我在r
中有一个字符串testing_String <- "AK ADAK NAS PADK ADK 70454 51 53N 176 39W 4 X T 7"
我需要能够在字符串中包含2个字符(AK)和PADK,ADK的第一个元素之间拉取任何内容。 PADK和ADK将改变字符,但长度总是4和3个字符。
所以我需要拉
ADAK NAS
我想出了这个,但是从AK到ADK的所有东西都是
^[A-Za-z0_9_]{2}(.*?) +[A-Za-z0_9_]{4}|[A-Za-z0_9_]{3,}
答案 0 :(得分:2)
如果我理解你的问题,这应该可以解决问题:
\b[A-Z]{2}\s+(.+?)\s+[A-Z]{4}\s+[A-Z]{3}\b
你必须切换perl = TRUE
选项(使用一个像样的正则表达式引擎)。
\b
表示字边界。所以这个模式寻找一个匹配,从一个2个字母的单词开始,以一个4个字母的单词后跟一个3个字母的单词结束。您的价值将在第一组中。
或者,您可以编写以下内容以避免使用捕获组:
\b[A-Z]{2}\s+\K.+?(?=\s+[A-Z]{4}\s+[A-Z]{3}\b)
但我更喜欢第一种方法,因为它更容易阅读。
答案 1 :(得分:2)
perl = TRUE支持Lookbehind,所以这个正则表达式会做你想要的:
999