我必须解析一个字符串,格式为!info1!info2!,并且info2是可选的。
我正在尝试使用正则表达式来捕获,info1如果info2需要的话。
我想出了以下模式:
!([^!]*?)!(.*?)!|!(.*?)!
Run Code Online (Sandbox Code Playgroud)
它有效,但我对结果不满意:
!foo!bar! -> Group1: foo Group2:bar
!foo! -> Group3: foo
(https://regex101.com/r/D9d6YP/1)
Run Code Online (Sandbox Code Playgroud)
在这两种表达方式中,foo表示相同的事物,并且随后以相同的方式进行处理。我想将它捕获在同一组中,无论是否有第二组。
我尝试过使用命名捕获组,但似乎它们无法重复使用
!(?<info1>[^!]*?)!(?<info2>.*?)!|!(?<info1>.*?)!
Run Code Online (Sandbox Code Playgroud)
失败并显示错误消息“子模式名称必须是唯一的”。
有什么办法可以捕获同一组中的不同模式吗?
我有这个正则表达式: {([^}]+)}
它成功捕获了括号内容,例如
hello {foo} and {bar}.
我还希望捕获由一个字符分隔的匹配内的组,例如
hello {foo:bar} and {hello:world}.
前者会{foo:bar}与群体产生匹配{foo},{bar}而后者则{hello:world}与群体{hello}和群体匹配{world}.
我不精通正则表达式,我已经试过这样:{([^}]+)(:([^}]))?}和{([^}]+)(\:([^}]))?}万一:是一个特殊字符.
我需要做哪些修改才能成功?
希望实现一个最终用户对话框,要求他们创建自己的密码.
长度必须为9个字符.1个字符必须是大写,1必须是小写,1必须是数字,['0'..'9'],一个必须来自一组6个预定义的ascii字符,如此.[ '!', '#', '%', '&', '*', '@'].
完成了这个.和工作.但是,我想要做的是使用onchange事件提供可见验证,如果满足所有要求,则将编辑框的颜色更改为绿色,否则更改为RED.对9个字符长度进行调整很容易,但是要检查9个不同的字符,以确保至少有1个上部,1个下部,1个数字和1个预定义,这证明有点困难.有人可以帮忙吗?谢谢.
这是代码:
procedure TPasswordForm.edtPassword1Change(Sender: TObject);
begin
if Length(edtPassword1.Text <> 9 then
edtPassword1.Color := clRed
else
edtPassword1.Color := clLime;
end;
Run Code Online (Sandbox Code Playgroud) 我需要 java 正则表达式方面的一些帮助。我有一种下面的字符串,我需要从中提取信息
\n\n\xe2\x80\x9csome information text followed by some price detail like below\n\nAmount: $45.75\nTax: $3.25\nDiscount: -$5.00\nTotal : *$49.00*\n\nfollowed by some other information text\xe2\x80\x9d\nRun Code Online (Sandbox Code Playgroud)\n\n我需要正则表达式来提取所有价格(键,值)对,例如 ( Amount, $45.75), ( Tax, $3.25)
或者也许使用正则表达式来提取所提供密钥的价格。即String amountregex = \xe2\x80\x9cregexstring\xe2\x80\x9d应该给$45.75
有人可以帮忙吗?
\nregex ×3
.net ×1
c# ×1
delphi ×1
delphi-2007 ×1
java ×1
passwords ×1
regex-group ×1
validating ×1