正则表达式在字符串的第n个字符处或之前查找空格
问题描述:
我需要在字符串的第n个字符处或之前查找空格字符。正则表达式在字符串的第n个字符处或之前查找空格
实施例,假定n为20:在串
Find one space in the right place
^ ^ ^^
0 10 M 20
的ħ是在20位,INT这种情况下我需要找到20位置之前的第一空间,前一个在第18个位置的字“the”,刚好在M。
我可以使用正lookbehinds像
(?<=.{80}).
找到第n个字符,但后来我需要回去,直到我找到的第一个空格字符,我不知道怎么办。
我使用记事本++,它不支持变长lookbehinds,如果可能我想要一个答案,让我也可以在记事本++中使用正则表达式。谢谢。
答
你可以使用这个表达式(但不包括引号):
"^.{1,19} "
注意最后的空间。
我已经用Notepad ++ 6.1.5(发布时的最新版本)测试过了。根据feature list,正则表达式与PCRE兼容(后视工作,但仅限固定宽度)。上面的正则表达式不适用于我现有的旧版本(Notepad ++ 5.9)。
既然你需要更换别的东西的空间,你可能需要使用捕获组保存的文本,只替换空间(内,但不包括引号):
"^(.{1,19}) " (Find)
"\1replace_space" (Replace)
注:正则表达式会搜索第20个字符之前或之后的空格。如果你想要第20个字符之前的空间要严格,更改19到18
答
对于N = 20,使用正则表达式(\s)\S*.(?<=^.{20})
为什么正则表达式?线性扫描应该可以工作,甚至更快。 – nhahtdh 2012-08-13 13:03:13
因为我没有使用编程语言 – Gabber 2012-08-13 13:05:13
正则表达式找到..你是什么意思发现?你想要在第20个字符之前的最后一个空格的位置吗? – FailedDev 2012-08-13 13:05:49