确保文件中一行存在的最佳方法是什么?
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
.
详情
^
- 行首
(<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 组中捕获的值。
比如我有
<Home/>
wall
none
</Home>
我在这里需要做的是想办法在
中添加"wall"<Home />
</Home>
然后确保它存在于文件中,如果不存在,我需要添加它。
确保 "wall" 存在的最佳方法是什么?
我尝试的是使用正则表达式:
^(<Home />.*\n)([^.]+</Home>.*)$
还有一个更新
wall\n
我如何将 "wall" 添加到文件中的该部分并确保它有意义(如果它已经在该部分中没有任何变化)?
您可以使用
^(<Home\s*/>)((?:\R(?!(?:wall|</Home>)$).*)*\R</Home>)
并替换为 \nwall
.
详情
^
- 行首(<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 组中捕获的值。