我认为只有“当它是”(任意一组单词)的一部分时,才会出现这种情况,但像"+“这样的量词却不能用于这两种类型的查找。那么人们是如何做到这一点的呢?我只想让regex跳过“(任何单字)”并注意“(任何一组单词)”。
(插入满是单词的整个句子,并可能包含一个附加的(括号大小的单词或一组单词))。
程序(TextAloud 4)应该匹配两个“)”。
(少年)
程序不应该与")“匹配。
最接近完成这项工作的是下面,但它只注意到“(字符/字字符)”。
(?<=\S(?:\s[A-Za-z0-9]))\)我的积极展望被设置为匹配任何"(“紧跟在前面”(任何一组单词)“,并且工作得很好。我知道它也会匹配"(a d)",但是不要期望它会成为一个问题,因为这主要是为了将一本网络小说转换成一本个人有声书。
\((?=[A-Za-z0-9!?]+(?:\s+[A-Za-z0-9]+))最终的目标是让TA4 1)说“开括号。是的,我是近括号”的意思(是的,我是。)2)用"Makoto“表示"(Makoto)”。
发布于 2022-03-04 17:02:08
只有在字符串之前有两个字母数字组被连字符分隔时,此字符串才匹配尾括号。
([a-zA-z0-9!?.]+[ \-]+[a-zA-z0-9!?.]+\s?)(\))匹配set of words).)和(TextAloud 4)末尾的括号
但不是(Junior)末尾的那个,它还在第二个单词和括号之间接受一个空格,如在two words )中。
我们可以通过使用$1、$2等来进行分区替换,用括号表示regex。
下面是PHP中的一个示例:
$testStrings="(Hello mate)<br>(Julien)<br>(What-are-you-doing?)<br>";
$pattern = "/([a-zA-z0-9!?.]+[ \-]+[a-zA-z0-9!?.]+\s?)(\))/";
print(preg_replace($pattern,"$1",$testStrings));
/* prints
(Hello mate
(Julien)
(What-are-you-doing?
*/
print(preg_replace($pattern,"$2",$testStrings));
/* prints
()
(Julien)
(What-are-)
*/这将为您的需要找到一个可能的解决方案:
print(preg_replace($pattern,"$1 - closing parenthesis",$testStrings));
/* prints
(Hello mate - closing parenthesis
(Julien)
(What-are-you-doing? - closing parenthesis
/*我们还没有处理开场白,但同样的方法应该是可行的。
https://stackoverflow.com/questions/71200808
复制相似问题