我正在尝试在Swift 4中构造一个正则表达式字符串,该字符串在一行的开头处获取字符,其中一些是已知的,而另一些则不是。
假设我有一个文本文件,每个单词都有换行符,内容如下:
pucker
tuckered
duckerdinger
sucker punch
我想让每个包含“cker”的单词长度为1到8个字符。
我正在尝试将此语句^..cker..{1,8}
用作我的RegEx字符串。我得到的只是模式(Mac App)中的部分匹配,但Regex101.com's表示不匹配,最重要的是,Xcode表示我使用了无效的正则表达式。我也尝试了^(..cker..)
和其他许多变种。
我搞砸了什么,如何解决?我正在努力做的事情看起来似乎非常简单,但是我浪费的时间比我小心翼翼地承认它更多。
更新
这是迄今为止我能够获得的最好成绩......
"\\b..cker.."
,但我只能得到长度恰好为8个字符的单词。我想要捕获包含“cker”的单词,这些单词是第3,第4,第5和第6个字母,同时捕获最多8个字符的单词。
答案 0 :(得分:2)
试试这个正则表达式:
\b(?=.*cker)[a-zA-Z]{1,8}\b
<强>解释强>
\b
- 匹配word boundary (?=.*cker)
- Positive Lookahead以确保我们的字符串应包含字符序列cker
[a-zA-Z]{1,8}
- 匹配1到8次出现的字母\b
- 匹配字边界