我正在使用powershell将字符串解析为XML:
NODE IP 0.0.0.0“APXPRD”
我需要得到:
<NODE_IP>0.0.0.0 "APXPRD"</NODE_IP>
我尝试使用regexp,但是只有当它在所有大写字母的单词之间,任何建议时才能解决如何将''替换为'_'的问题?
我试试那个正则表达式:
$textis = 'NODE IP 0.0.0.0 "APXPRD"'
$textnew = $textis.replace('/^\s*[A-Z]+(?:\s+[A-Z]+)/m', '_')
但这似乎不起作用:/
答案 0 :(得分:1)
您可以搜索:
((?:^|\s)[A-Z]+)\s([A-Z]+(?:\s|$))
并将其替换为:
$1_$2
这将查找一个大写字母([A-Z]
)的字符串,它直接位于空格(\s
)或字符串的开头(^
)之后。然后,在中间和最后之间需要一个空格,它再次匹配空格(\s
)或字符串结尾($
)。
如果您使用PowerShell替换它,则需要这样做(请注意:区分大小写的匹配命令creplace
不仅仅是replace
):
$textis = 'NODE IP 0.0.0.0 TEST String "APXPRD"'
$textnew = $textis -creplace '((?:^|\s)[A-Z]+)\s([A-Z]+(?:\s|$))','$1_$2'
答案 1 :(得分:1)
(?<=[A-Z]) (?=[A-Z])
将为您提供大写字母之间的空格。
注意中间的空间。它使用lookbehind和lookahead