确保文件中一行存在的最佳方法是什么?

Whats the best way to ensure a line in a file exists?

比如我有

<Home/>
wall
none
</Home>

我在这里需要做的是想办法在

中添加"wall"
<Home />

</Home>

然后确保它存在于文件中,如果不存在,我需要添加它。

确保 "wall" 存在的最佳方法是什么?

我尝试的是使用正则表达式:

^(<Home />.*\n)([^.]+</Home>.*)$

还有一个更新

 wall\n

我如何将 "wall" 添加到文件中的该部分并确保它有意义(如果它已经在该部分中没有任何变化)?

您可以使用

^(<Home\s*/>)((?:\R(?!(?:wall|</Home>)$).*)*\R</Home>)

并替换为 \nwall.

regex demo

详情

  • ^ - 行首
  • (<Home\s*/>) - 第 1 组:<Home,0+ 个空格,/>
  • ((?:\R(?!(?:wall|</Home>)$).*)*\R</Home>) - 第 2 组:
    • (?:\R(?!(?:wall|</Home>)$).*)* - 连续出现 0 次以上
      • \R(?!(?:wall|</Home>)$) - 一个换行符序列 (\R),后面没有 wall</Home> 作为整行文本(在否定前瞻 [ 的帮助下) =22=])
      • .* - 除换行字符外的任何 0+ 个字符到行尾(尽可能多)
    • \R - 一个换行符
    • </Home> - </Home> 子串。

</code> 和 <code> 是替换反向引用,指的是第 1 组和第 2 组中捕获的值。