5

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

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

 Find one space in the right place
^         ^       ^ ^
0         10      M 20

h位于第 20 位,在这种情况下,我需要在第 20 位之前找到第一个空格,即第 18 位“the”之前的第一个空格,就在M上方。

我可以使用积极的lookbehinds找到第n个字符

(?<=.{80}).

但后来我需要回去,直到我找到第一个空格字符,我不知道怎么做。

我正在使用不支持可变长度后视的记事本++,如果可能的话,我想要一个允许我在记事本++中使用正则表达式的答案。谢谢。

4

2 回答 2

6

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

"^.{1,19} "

注意最后的空格。

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

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

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

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

于 2012-08-13T13:14:04.403 回答
-1

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

于 2012-08-13T13:14:15.840 回答