Php 选择just";";从「;“3月11日”;使用正则表达式
如何使用正则表达式将以下数据中的th、nd、st替换为空格之类的内容 我的随机文本在这里带有th。。。。。“3月11日”…我的随机文本中有th。 我的随机文本在这里有nd。。。。。“3月2日”…我的随机文本中有nd。 我的随机文本中有st。。。。。“3月1日”…我的随机文本中有stPhp 选择just";";从「;“3月11日”;使用正则表达式,php,regex,sublimetext2,Php,Regex,Sublimetext2,如何使用正则表达式将以下数据中的th、nd、st替换为空格之类的内容 我的随机文本在这里带有th。。。。。“3月11日”…我的随机文本中有th。 我的随机文本在这里有nd。。。。。“3月2日”…我的随机文本中有nd。 我的随机文本中有st。。。。。“3月1日”…我的随机文本中有st 到目前为止,我尝试了这个[0-9]0-9,但它也替换了这个数字。如何保留数字或仅选择所需的部分?(?考虑以下正则表达式 (?<=\"\d+)[a-zA-Z]+ (?正如Johnsyweb所建议的,replac
到目前为止,我尝试了这个[0-9]0-9,但它也替换了这个数字。如何保留数字或仅选择所需的部分?
(?考虑以下正则表达式
(?<=\"\d+)[a-zA-Z]+
(?正如Johnsyweb所建议的,replace命令的确切语法将取决于您使用的语言。
jaco0646有一个很好的正则表达式来匹配您想要的,并且关键地捕获它。(第二组括号可以做到这一点(以及对备选项进行分组)。顺便说一下,第一组括号是非捕获的,这要感谢?
作为括号中的第一个字符。)
无论如何,捕获了所需的文本后,您将在替换表达式中将该捕获组称为\1
。这是反斜杠。
如果您的正则表达式中有多个捕获组,则可以使用\2
引用第二个捕获组,依此类推。
如果您有嵌套的捕获组,那么您可以按其左括号的顺序对它们进行计数。例如,在((foo)bar)
中,\1
将是“foobar”,而\2
将只是“foo”。您可以捕获数字字符并匹配以下th
,nd
,st
对于括号中模式的第一个匹配,通常回指为$1
或\1
请尝试以下操作:
Find: ([0-9]+)[a-zA-Z]{2}
Replace: $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;
?>
我使用的是sublime text 2。回答有点简洁,但正确。你能展示一下“替换”部分是如何工作的吗?@Floris我现在使用的是sublime text 2的搜索和替换功能。如果我想在PHP中做同样的事情,我会怎么做?感谢PHP版本。我在回应你的评论时添加了这个“如果我能在PHP中做同样的事情……”我认为@jaco0464的答案在细节上有点过于轻率。