正则表达式,用于在Swift中使用通配符清晰显示单行单词

时间:2017-09-24 03:19:20

标签: ios regex

我正在尝试在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个字符的单词。

1 个答案:

答案 0 :(得分:2)

试试这个正则表达式:

\b(?=.*cker)[a-zA-Z]{1,8}\b

Click for Demo

<强>解释

  • \b - 匹配word boundary
  • (?=.*cker) - Positive Lookahead以确保我们的字符串应包含字符序列cker
  • [a-zA-Z]{1,8} - 匹配1到8次出现的字母
  • \b - 匹配字边界