Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式匹配句子结尾标点,而不删除分隔符并连接<;p>;标签_Javascript_Regex - Fatal编程技术网

Javascript 正则表达式匹配句子结尾标点,而不删除分隔符并连接<;p>;标签

Javascript 正则表达式匹配句子结尾标点,而不删除分隔符并连接<;p>;标签,javascript,regex,Javascript,Regex,我需要匹配文本文件中的所有句子结尾标点,通过ajax以json格式传递到html页面,同时保留分隔符并在每个句子中加入标记 现行代码如下: var xhr = new XMLHttpRequest(); xhr.onload = function() { if(xhr.status === 200) { responseObject = JSON.parse(xhr.responseText); var newContent = ''; // text file

我需要匹配文本文件中的所有句子结尾标点,通过ajax以json格式传递到html页面,同时保留分隔符并在每个句子中加入
标记

现行代码如下:

var xhr = new XMLHttpRequest();

xhr.onload = function() {
  if(xhr.status === 200) {
    responseObject = JSON.parse(xhr.responseText);

    var newContent = '';

    // text file html encasing
    newContent += '<p>' + responseObject.content + '</p>';

    // regex
    matchedPunctuation = newContent.match(/.*?[?!.]/g);

    // add element
    document.getElementById('myptag').innerHTML = matchedPunctuation.join('<p>');


  }
};

xhr.open('GET', 'http://127.0.0.1:5000/jsonstory', true);
xhr.send(null);
var xhr=new-XMLHttpRequest();
xhr.onload=函数(){
如果(xhr.status==200){
responseObject=JSON.parse(xhr.responseText);
var newContent='';
//文本文件html封装
newContent+=''+responseObject.content+'

'; //正则表达式 Matched标点=newContent.match(/.*?[?!!]/g); //添加元素 document.getElementById('myptag').innerHTML=matched标点符号.join(''); } }; xhr.open('GET','http://127.0.0.1:5000/jsonstory",对),; xhr.send(空);
当我有一句话如下时,我就不明白了:

短文本文件示例。。。。。。。外面的天气真好。戴夫说:“是的。”

上面的代码将正确地将
标记添加到第一个句子中,这将直接在句点之后但在下一个句子开始之前


第二句话将它们添加到句号和引号之间,

,这将引号与我的html文件中应该保留的句子分开一行。任何想法或解决方案都将不胜感激!谢谢。

尝试这个正则表达式
*?[?!]?
“?
使双引号是否存在成为可选要求。如果是,它会首先在比赛中使用它,如果不是,它会继续进行

希望这能有所帮助

var xhr = new XMLHttpRequest();

xhr.onload = function() {
  if(xhr.status === 200) {
    responseObject = JSON.parse(xhr.responseText);

    var newContent = '';

    // text file html encasing
    newContent += '<p>' + responseObject.content + '</p>';

    // regex
    matchedPunctuation = newContent.match(/.*?[?!.]"?/g);

    // add element
    document.getElementById('myptag').innerHTML = matchedPunctuation.join('<p>');


  }
};

xhr.open('GET', 'http://127.0.0.1:5000/jsonstory', true);
xhr.send(null);
var xhr=new-XMLHttpRequest();
xhr.onload=函数(){
如果(xhr.status==200){
responseObject=JSON.parse(xhr.responseText);
var newContent='';
//文本文件html封装
newContent+=''+responseObject.content+'

'; //正则表达式 Matched标点符号=newContent.match(/.*?[?!.]“?/g); //添加元素 document.getElementById('myptag').innerHTML=matched标点符号.join(''); } }; xhr.open('GET','http://127.0.0.1:5000/jsonstory",对),; xhr.send(空);
但是我看不到你在代码中添加的任何地方,你是如何在输出中显示的?你能指出你添加

的那部分吗?如果我没有注意到,你的猜测和我的一样好,但是当我在Chrome开发者工具中打开输出时,它会使用
.join()以某种方式添加它们
我想我可以用一个结束标记将响应对象括起来,这是我应该做的。不过我不关心这个问题。就上面的问题。我将编辑这个问题以匹配您的建议快速签入控制台似乎不符合您所说的,即
['a','b']。加入(“”)
打印
ab
由于您的
是分隔符,因此需要排除
,您是否可以在什么情况下更新规则您不希望您的分隔符被视为已更新问题。我所关心的是句子结尾的标点符号,而不是逗号。基本上。!?是我唯一需要匹配的三个标点符号。但我遇到了麻烦,因为有些句子的标点符号后面挂着引号。因此,当我将段落标记与上面的当前表达式连接在一起时,它会将其连接在句子结尾标点和引号之间。对于这些例子,我想在引号后加入段落标记,但仍然能够在没有引号的标点符号后加入段落标记。这正是我想要的!谢谢我会更新你的评论,但对论坛来说是新的,所以我不能更新。@NicholasRagan在评论的更新/删除下方应该有一个复选标记。这是由OP(在本例中为您)选择解决您的问题的答案。请选中它。再次感谢。