Regex 如何匹配整个字符串以将其替换为其组件?

Regex 如何匹配整个字符串以将其替换为其组件?,regex,string,Regex,String,好吧,我已经在regexr.com上摆弄了很长一段时间了,我仍然没有任何乐趣 这是我的示例数据: <html><body><p>7792,783,5365514 -1,1,-1 6329,46,72141 -1,1,-1 8595,42,49104 -1,1,-1 14386,21,5026 6172,52,128182 6311,51,114826 9108,43,51437 8257,24,7050 5289,55,169099 -1,1,-1 15667

好吧,我已经在regexr.com上摆弄了很长一段时间了,我仍然没有任何乐趣

这是我的示例数据:

<html><body><p>7792,783,5365514 -1,1,-1 6329,46,72141 -1,1,-1 8595,42,49104 -1,1,-1 14386,21,5026 6172,52,128182 6311,51,114826 9108,43,51437 8257,24,7050 5289,55,169099 -1,1,-1 15667,26,8919 29,79,1861956 32,83,2681719 4595,32,16506 8469,22,6113 -1,1,-1 -1,1,-1 -1,1,-1 7912,50,102981 -1,1,-1 6951,15,2579 -1,1,-1 4830,46,70571 6617,24,7553 -1,-1 -1,-1 -1,-1 -1,-1 -1,-1 -1,-1 -1,-1 -1,-1 -1,-1 -1,-1 -1,-1 -1,-1 -1,-1 -1,-1 -1,-1 -1,-1 -1,-1 -1,-1 -1,-1 -1,-1 -1,-1 -1,-1 </p></body></html>
,-1-1,-1-1,-1-1,-1-1,-1-1,-1-1,-1-1,-1-1,-1-1,-1-1,-1-1,-1-1,-1-1,-1-1,-1-1,-1-1,-1-1,-1

我想做的是用每个数字替换整个字符串。所以我将运行一次正则表达式,并用7792替换字符串。然后再次运行,并替换为783。再次运行,替换为5365514,依此类推

如何构建第一个、第二个和第三个正则表达式?我可以从那里算出来


这些数字显然是唯一会改变的部分。其余的将在运行时保持不变

好的,我终于找到了一个解决方案,尽管它显然不是最好的。我仍然想知道是否有人有比这更好的选择,但张贴这个,以便它可能是有用的地方吗

这是我的正则表达式:

<(?:[\s\S]+)>-?(\d+)\,-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\s-?(\d+)\,-?(\d+)\s.*
在这两种情况下,我会在以下两种情况下,在以下两种情况下,在以下两种情况下,我会在以下两种情况下,在以下两种情况下,在以下两种情况下,我会在上述两种情况下,在上述两种情况下,在以下两种情况下,我会在以下两种情况下,在以下两种情况下,在以下两种情况下,我会在以下的主要主要主要主要主要的主要是在进行进行进行进行的情况下,在在以下的情况下,除了除了除了除了除了除了除了除了除了除了除了除了除了在在在在进行进行上述两两种情况外,在进行的情况外,其他其他其他其他其他人士,在在进行进行进行进行进行的情况,在在在在在一些一些一些在在在进行进行的情况下,在在进行的情况下,除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了在在在\d+)\s-(\d+)、-(\d+)、-(\d+)\s-(\d+)、-(\d+)、-(\d+)\s-(\d+)、-(\d+)、-(\d+)、s-(\d+)、-(\d+)、-(\d+)、s-(\d+)、-(\d+)、-(\d+)、-(\d+),-目前,在这两种情况下,我将在本局进行的两个主要主要是在本局进行的两个主要是在本局进行的两两个主要是在本局进行的两个主要是在本局进行的两两个主要是在目前进行的两个主要是在本局进行的两个主要是在本局进行的两个主要是在本局进行的两两个主要的主要是在进行中,除了除了除了在本局进行进行的两两两个不同不同的环境中,在在在进行进行进行进行的两两两两个不同不同的情况下,以及在在在进行进行进行进行的比较比较比较不同的情况下,以及在在本局进行进行的两两两两两两个不同的情况下进行进行进行进行进行进行进行的比较比较比较比较比较比较,在在在在两两两两个不同的情况下,以及在在在在在进行进行进行的两两两两两两个不同的情况下,以及在在在进行进行进行的两两两两两两个,-(\d+)\s-(\d+),-(\d+),-(\d+)\s-(\d+),-(\d+),-(\d+)\s-(\d+),-(\d+),-(\d+)\s-(\d+),-(\d+),-(\d+),-(\d+),-(\d+)s-(\d+),-(\d+)\在这两种情况下,我会在目前的情况下,在目前的情况下,在目前的情况下,我会在目前的情况下,在目前的情况下,在目前的情况下,我会在目前的情况下,在目前的情况下,在目前的情况下,我亦会在目前的情况下,在目前的情况下,在目前的情况下,我会在这两两种情况下,在目前的情况下,我会在进行进行进行的情况下,在本本次次的情况下,我会是在本次的主要主要主要主要主要主要主要的手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手+)\ s-(\d+)、-(\d+)\s-(\d+)、-(\d+)\s-(\d+)、-(\d+)\s-(\d+)、-(\d+)\s-(\d+)、-(\d+)\s-(\d+)、-(\d+)、-(\d+)、-(\d+)、-(\d+)、-(\d+)、-?(\d+),-?(\d+)\s-?(\d+),-?(\d+)\s-(\d+),-?(\d+)\s-(\d+),-?(\d+)\s-(\d+),-?(\d+)\s*
然后,我有125个组可用于替换为我认为适合我的组。:)它在Regexr中工作:

这是使用此模式的125个匹配项

(?:<html><body><p>|\G[, ])\K(-?\d+)(?=.*<\/p><\/body><\/html>$)
(?:\G[,])\K(-?\d+(=.*$)

我将去掉html(s/]*>//g),然后用换行符替换逗号和空格,然后在换行符上分解()字符串。结果将是字符串中所有数字的数组。

好的,我现在找到了一个合适的答案。以下是我正在使用的:

<(?:[\s\S]+)>(?:.+?\n){4}(-?\d+)\,(-?\d+)\,(-?\d+)[\s\S]*
(?:.+?\n){4}(-d+),(?\d+),(?\d+)[\s\s]*
要转到下一行,我只需将{4}增加到{5},然后我得到该行的三个捕获组:$1$2和$3。这感觉是一个比以前好得多的解决方案(实际上,它适合我需要输入它的框,我在发布我之前的答案太长后才意识到)


您正在运行哪种语言?我正在使用drupal模块。我想这意味着PHP?)模块是feeds tamper)那么数字是怎样的呢?
5365514-1
这些数字实际上是用换行符分隔的,换行符不会以那样的代码形式出现,但它们在那里。然而,如果不是。。。(他们应该。。。我需要它们是两个独立的数字。好的,HTML总是存在吗?问题是它不匹配整个字符串,所以替换它不会按我所希望的方式工作。你是什么意思?你能再详细说明一下吗?