我想用正则表达式执行以下操作但不确定如何执行此操作.我希望它匹配one two何时one two是行的开头,除非字符串包含three在后面的任何地方one two.
我有一个字符串喜欢5.5kg或7.90gram我想得到5.5或7.90作为十进制值.如何在C#中获得这样的结果,还有一件事我的字符串将始终以十进制开头.
这是我的代码,只要遇到除小数之外的任何内容,就会抛出错误.
string weight = attributeValue;
if (!string.IsNullOrEmpty(weight))
{
product.Weight = Convert.ToDecimal(attributeValue);
}
else
{
product.Weight = 0.00m;
}
Run Code Online (Sandbox Code Playgroud) 如何全局替换|字符串中的(管道)符号?当我尝试更换它时"so|me|str|ing".replace(/|/g, '-'),我明白了"-s-o-|-m-e-|-s-t-r-|-i-n-g-"
所以,我有一个函数有两个参数:字符串和匹配索引要替换,我需要替换只匹配该索引.我怎样才能做到这一点?
例:
replace('a_a_a_a_a', 1)
Run Code Online (Sandbox Code Playgroud)
结果:
a__a_a_a
Run Code Online (Sandbox Code Playgroud) 我有以下字符串:
ThisSentence.ShouldBe.SplitAfterLastPeriod.Sentence
Run Code Online (Sandbox Code Playgroud)
所以我想选择,Sentence因为它是最后一个时期之后的字符串.我怎样才能做到这一点?
我必须匹配一个8个字符的字符串,它可以包含2个字母(1个大写和1个小写),正好是6个数字,但它们可以任意排列.
所以,基本上:
我已经尝试使用正向前瞻来确保字符串包含数字,大写和小写字母,但是我将其限制为特定次数.我想我可以通过包括字母和数字可能出现的所有可能组合来解决它:
(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z]) ([A-Z][a-z][0-9]{6})|([A-Z][0-9][a-z][0-9]{5})| ... | ([0-9]{6}[a-z][A-Z])
Run Code Online (Sandbox Code Playgroud)
但这是一种非常迂回的方式,我想知道是否有更好的解决方案.
我正在寻找一个正则表达式来捕获字符串中前7个字符的所有数字.
这个字符串有12个字符:
A12B345CD678
Run Code Online (Sandbox Code Playgroud)
我想删除A,B因为他们在前7个字符(A12B345)内得到
12345CD678
Run Code Online (Sandbox Code Playgroud)
所以,CD678不应该触及.我目前在R的解决方案:
paste(paste(str_extract_all(substr("A12B345CD678",1,7), "[0-9]+")[[1]],collapse=""),substr("A12B345CD678",8,nchar("A12B345CD678")),sep="??")
Run Code Online (Sandbox Code Playgroud)
这似乎太复杂了.我按照描述将字符串拆分为7,匹配前7个字符中的任何数字,并将其与字符串的其余部分绑定.
寻找一般答案,我目前的解决方案是拆分前7个字符,并匹配此子字符串中的所有数字.
任何帮助赞赏.
我有这个字符串:
seed_pattern <- "K?ED??HRDDKDKD?HE?REKE??DE?KKK"
Run Code Online (Sandbox Code Playgroud)
给定另一个字符串
bb_seq <- "rhhhhitv"
Run Code Online (Sandbox Code Playgroud)
我想做的是通过保持结果的顺序来替换?为字符:bb_seqbb_seq
的总长度?保证与 相同bb_seq。
KrEDhhHRDDKDKDhHEhREKEitDEvKKK
Run Code Online (Sandbox Code Playgroud)
我怎样才能用 R 实现这一目标?
我尝试过这个但失败了:
seed_pattern <- "K?ED??HRDDKDKD?HE?REKE??DE?KKK"
bb_seq <- "rhhhhitv"
sp <- seed_pattern
gr <- gregexpr("\\?+", sp)
csml <- lapply(gr, function(sp) cumsum(attr(sp, "match.length")))
regmatches(sp, gr) <- lapply(csml, function(sp) substring(bb_seq, c(1, sp[1]), sp))
sp
# KrEDrhhHRDDKDKDrhhhHErhhhhREKErhhhhitDErhhhhitvKKK
Run Code Online (Sandbox Code Playgroud)
我对非正则表达式解决方案持开放态度。
我正在尝试构建一个正则表达式模式,其中包含从数据库中检索的某些模式部分.
例如
string pt= "@\"\\b(" + db.GetPattern + ")\\b\"";
Regex regex = new Regex(pt, RegexOptions.IgnoreCase | RegexOptions.Compiled);
return regex.Replace(input, "*");
Run Code Online (Sandbox Code Playgroud)
虽然我试图逃避它,但我无法让它发挥作用.如果我手动构建模式
Regex regex = new Regex(@"\b(test|test2)\b", RegexOptions.IgnoreCase | RegexOptions.Compiled);
return regex.Replace(input, "*");
Run Code Online (Sandbox Code Playgroud)
它工作正常.
是否有可能在Java中编写一个正则表达式模式,例如,3个中的2个(或4个中的3个)组?
例如,我有以下正则表达式:
((?=.*\d)(?=.*[a-z])(?=.*[A-Z]))
Run Code Online (Sandbox Code Playgroud)
这将只允许匹配所有三个组的模式 - 即它必须包含一个数字和一个小写字符和一个大写字符.我想这样做,它将验证一个包含三个组中至少两个的模式(例如一个数字和一个大写字符或一个小写和大写字符).
它是在单个语句中可行还是我将不得不编写单独的正则表达式并循环它们?