我正在使用它:
(\s*([a-z]\w+)){0,20}(class)(\s*([a-z]\w+)){0,20}
要在本文“示例文字”中找到“课程”:
class
无论他是在创建一个对象,还是他是否在一个实例class method
中。他不是,所以自我,如果它是有效的,指向对象,而不是class
的实例无论他是否正在创建一个对象,而不管他是否在实例方法中。他不是,所以自我,如果它是有效的,则指向class object
,而不是class he
创建对象无关紧要的实例,而是他是否在一个实例中方法。他不是,所以自我,如果它有效,则指向class object
,而不是class
的实例
如果它们存在,我想选择'class'和前后20个字符
答案 0 :(得分:4)
您可以使用以下正则表达式:
.{0,20}?\bclass\b.{0,20}
请参阅regex demo
<强>详情
.{0,20}?
- 除了换行符之外的任何0到20个字符,因为很少 \bclass\b
- 整个字class
.{0,20}
- 除了换行符之外的任何0到20个字符,尽可能很多 以下是您希望获得重叠匹配的变体(以便class
之后的0到20个字符也可以搜索class
):
.{0,20}?\bclass\b(?=(.{0,20}))
请参阅this regex demo。
您只需要获取匹配值并将其与第1组值(在正向前方(.{0,20})
内与(?=(.{0,20}))
捕获组匹配和捕获的文本部分进行连接。由于积极向前看不移动正则表达式索引,下一个匹配将能够在整个单词class
之后立即开始。