我需要在字符串的第n个字符处或之前找到空格字符.
例如,假设字符串中的n为20:
Find one space in the right place ^ ^ ^ ^ 0 10 M 20
h位于第20位,在这种情况下,我需要找到第20个位置之前的第一个空格,第18个位置中的“the”之前的第一个空格,就在M之上.
我可以使用积极的lookbehinds找到第n个角色
(?<=.{80}).
但后来我需要回去,直到找到第一个太空人物并且我不知道如何.
我正在使用不支持可变长度lookbehinds的记事本,如果可能的话我想要一个允许我在记事本中使用正则表达式的答案.谢谢.
解决方法
你可以使用这个正则表达式(内部但不包括引号):
"^.{1,19} "
注意最后的空格.
我用Notepad 6.1.5(发布时的最新版本)对此进行了测试.根据feature list,正则表达式与PCRE兼容(后视工作,但仅限固定宽度).上面的正则表达式不适用于我当前的旧版本(Notepad 5.9).
由于您需要用其他内容替换空格,您可能希望使用捕获组来保留文本并仅替换空格(内部但不包括引号):
"^(.{1,19}) " (Find) "\1replace_space" (Replace)
注意:正则表达式将在第20个字符之前或第20个字符处搜索空格.如果您希望空间严格位于第20个字符之前,请将19更改为18.