找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 50226|回复: 26

[问题求助] PowerShell如何用正则取=后面的字符?

[复制链接]
发表于 2021-10-31 13:08:34 | 显示全部楼层 |阅读模式
_$abctitle_大中国=小日本, 美国佬!
_$cdectitl_大中华=小日本, 英国佬!

把上面两行存成 test.txt, 用powershell =后面的内容

期待的结果:
使用包含 _$abctitle_ 的正则表达式, 获取 第一行 = 后面的 小日本, 美国佬!
同理:
使用包含 _$cdectitl_ 的正则表达式, 获取 第二行 = 后面的 小日本, 英国佬!

自己写了下面的powershell 脚本, 但是取不到值, 求高手指点, 感谢!
-----------------------------------------
(type -Encoding UTF8 "C:\Users\Administrator\Desktop\test.txt") -match '[^_$abctitle_(.*)]=(.+)'
$matches
 楼主| 发表于 2021-10-31 14:17:26 | 显示全部楼层
[^_$abctitle_(.*)]=(.+)$   这样把  国=小日本, 英国佬!  干掉了, 但是  国=  字怎样搞掉
发表于 2021-10-31 15:17:59 | 显示全部楼层
(?<=_\$abctitle_...=).+$
 楼主| 发表于 2021-10-31 15:26:40 | 显示全部楼层
回复 3# xp3000


    感谢, 我是在Powershell中匹配的, 试了下,取不到值, 您的应该是批处理要用的?
 楼主| 发表于 2021-10-31 15:29:48 | 显示全部楼层
本帖最后由 5i365 于 2021-10-31 15:47 编辑

回复 3# xp3000


(type -Encoding UTF8 "C:\Users\Administrator\Desktop\test.txt") -match '[^_$title_(.*)]=(.+)'
$matches
发表于 2021-10-31 15:36:22 | 显示全部楼层
我用的是软件,支持正则的很多都支持,除了早期的
EmEditor
发表于 2021-10-31 15:59:40 | 显示全部楼层
  1. (type -Encoding UTF8 "C:\Users\Administrator\Desktop\test.txt") -match "^_$abctitle_.*=(.+)"
复制代码
 楼主| 发表于 2021-10-31 16:03:53 | 显示全部楼层
本帖最后由 5i365 于 2021-10-31 16:05 编辑

回复 7# idwma


感谢, 执行结果是 那两行完全输出了
正则中包含_$abctitle_
那就取包含_$abctitle_ 的那行中=后面的内容,即   小日本, 美国佬!   这几个字,
 楼主| 发表于 2021-10-31 16:06:07 | 显示全部楼层
回复 7# idwma


    如正则表达式中包含 _$cdectitl_
那就取
小日本, 英国佬!
 楼主| 发表于 2021-10-31 16:33:07 | 显示全部楼层
回复 7# idwma


    (@'
_$abctitle_大中国=小日本, 美国佬!
_$cdectitl_大中华=小日本, 英国佬!
'@) -match '[^_$abctitle_(.*)]=(.+)'
$matches
------------------------------------------------
用上面的方式还能取到值, 但是有两个值,
但是用下面的方法却取不了
------------------------------------------------
(type -Encoding UTF8 "C:\Users\Administrator\Desktop\test.txt") -match '[^_$abctitle_(.*)]=(.+)'
发表于 2021-10-31 17:04:06 | 显示全部楼层
  1. foreach($a in (type test.txt)){if($a -match "^_$abctitle_.*=(.+)"){$matches[1]}}
复制代码
 楼主| 发表于 2021-10-31 17:07:57 | 显示全部楼层
回复 11# idwma


    运行后没有值
 楼主| 发表于 2021-10-31 17:11:40 | 显示全部楼层
回复 11# idwma


    用批处理如何实现从 test.txt中,
取包含 _$abctitle_  所在行的 = 后面的字符
取包含 _$cdectitl_  所在行的 = 后面的字符
发表于 2021-10-31 17:23:01 | 显示全部楼层
回复 13# 5i365
  1. foreach($a in (type test.txt)){if($a -match "^_[$]abctitle_.*=(.+)"){$matches[1]}}
复制代码
 楼主| 发表于 2021-10-31 17:35:37 | 显示全部楼层
回复 14# idwma


    还是不行, 转义 符 用 ` 也不行
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 05:08 , Processed in 0.017619 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表