正则表达式在字符串的第n个字符处或之前查找空格

时间:2012-08-13 13:02:05

标签: regex notepad++

我需要在字符串的第n个字符处或之前找到空格字符。

示例,假设n为20:在字符串

 Find one space in the right place
^         ^       ^ ^
0         10      M 20
h 处于第20位,在这种情况下,我需要找到第20个位置之前的第一个空格,在第18个位置之前的单词“the”之前的那个位置,就在中号

我可以使用像

这样的积极外观来找到第n个角色
(?<=.{80}).

然后我需要回去,直到找到第一个空格字符,我不知道如何。

我正在使用notepad ++,它不支持可变长度的lookbehinds,如果可能的话,我想要一个允许我在notepad ++中使用正则表达式的答案。感谢。

2 个答案:

答案 0 :(得分:6)

您可以使用此正则表达式(内部但不包括引号):

"^.{1,19} "

注意最后的空格。

我用Notepad ++ 6.1.5(发布时的最新版本)对此进行了测试。根据{{​​3}},正则表达式与PCRE兼容(后视工作,但仅限固定宽度)。上面的正则表达式不适用于我当前的旧版本(Notepad ++ 5.9)。

由于您需要用其他内容替换空格,您可能希望使用捕获组来保留文本并仅替换空格(内部但不包括引号):

"^(.{1,19}) " (Find)
"\1replace_space" (Replace)

注意:正则表达式将搜索20或20之前的空格。如果您希望空格严格位于第20个字符之前,请将19更改为18。

答案 1 :(得分:-1)

对于 n = 20 ,请使用正则表达式(\s)\S*.(?<=^.{20})