8

我需要修改一个键值文件的键如下:

"1Don't do that" = "some value"

"_1Don_t_do_that" = "some value"
  • 如果字符串以数字开头,则在前面加上下划线
  • 用下划线替换任何非字母数字字符
  • 不要更改值字符串

如有必要,我可以分几个步骤完成

我已经尝试过类似的方法\"\w+[^\w]\w+\" = ,但它没有考虑多个空格,也没有单引号或双引号。

欢迎任何帮助。

4

2 回答 2

3

假设您的引号都没有转义,这应该有效:

(?:(?<=")(?=\d)|[^\w"])(?=[^"]*"\s*=)

这匹配

  • "一个数字之间的位置
  • 或非字母数字字符(引号除外),

但前提是它们后跟单引号和等号。

在 regex101 上看到它

于 2013-07-08T21:34:59.070 回答
1

我不确定 Xcode 使用什么正则表达式风格,但只要它支持积极(?=)的前瞻,这一系列替换应该可以工作:

  1. 如果字符串以数字开头,则在前面加上下划线
    • 寻找:^"(?=\d)
    • 全部替换:"_
  2. 用下划线替换任何非字母数字字符,确保值字符串在我们正在更改的内容之后,而不是其中的一部分。
    • 寻找:[^a-zA-Z0-9](?=[^"]*"\s*=\s*"[^"]*")
    • 全部替换:_

第二步假设引号字符永远不会出现在值字符串中;告诉我您是否需要处理反斜杠转义的引号字符。

于 2013-07-08T21:41:16.560 回答