如何使用正则表达式替换以下数据中的th,nd,st和任何空格。
我的随机文字随身携带......“3月11日”....我的随机文字随身携带。 我的随机文字在这里与nd在一起......“02nd March”....我的随机文字在这里与nd一起来到这里。 我的随机文字带着它进去了......“3月1日”....我的随机文字带着st进去了。
到目前为止,我尝试了这个[0-9] 0-9,但它也取代了这个数字。如何保留数字或只选择所需的部分?
答案 0 :(得分:1)
(?<=\d)(th|rd|nd|st)
答案 1 :(得分:1)
您可以捕获数字字符并匹配以下th
,nd
,st
。
对于括号中的模式的第一个匹配,通常后引用为$1
或\1
。
尝试以下方法:
Find: ([0-9]+)[a-zA-Z]{2}
Replace: $1
请参阅Live demo
答案 2 :(得分:1)
在php中,以下代码段用于在数字后立即执行st
,nd
等的查找和替换,并将其替换为**
。您可以看到可以插入“任何字符串”以进行替换。
对@ jaco0646大肆宣传!
<?php
$inputString = 'This is the 2nd of November<br>';
$pattern = '/(?<=[0-9])(st|nd|rd|th)/';
$replacement = '**';
$newString = preg_replace($pattern, $replacement, $inputString);
echo $inputString;
echo $newString;
?>
答案 3 :(得分:0)
考虑以下Regex ......
(?<=\"\d+)[a-zA-Z]+
祝你好运!
答案 4 :(得分:0)
正如Johnsyweb所说,replace命令的确切语法将取决于您使用的语言
jaco0646有一个很好的正则表达式,可以匹配你想要的东西,并且批判性地捕获它。 (第二组括号可以做到这一点(以及对备选方案进行分组)。顺便说一下,第一组括号是非捕获的,这要归功于?
作为其中的第一个字符。)
无论如何,在捕获了您想要的文本后,您将在替换表达式中将该捕获组称为\1
。这是反斜杠 - 一
如果您的正则表达式中有多个捕获组,那么您可以使用\2
引用第二个捕获组,依此类推。
如果您有嵌套捕获组,则按其左括号的顺序计算它们。因此,在((foo)bar)
中,\1
将是“foobar”而\2
将只是“foo”。