在 C++ 中,如何在每个短语和标点符号之间使用空格来分隔句子中的标点符号?
我想用 C++ 编写一个程序,获取一个句子并在每个单词和标点符号之间插入一个空格!在 sed 脚本中,这是用这个表达式完成的:
sed -e "s/,\([^0-9]\)/ , \1/g" -e "s/\.\([^0-9]\)/ . \1/g" -e 's/\.[ ]*$/ ./g' -e "s/\'/ \' /g" -e 's/?/ ?/g' -e 's/\`\`/ `` /g' -e "s/\' \'/''/g" -e 's/(/ ( /g' -e 's/)/ ) /g' -e 's/ \. \([^$]\)/. \1/g' -e "s/\' s/\'s/g" -e "s/\"\([^\"]*\)\"/\" \1 \"/g" $1 | sed -e "s/\"\([^\"]*\)\"/\`\`\1''/g"
但我不知道我应该如何在 Windows 中的 C++ 中执行此操作! 例如:应该转换为“现在的问题:他能表现得更像强势的泰迪·罗斯福吗?”必须转换为“现在的问题:他能否表现得更像强势的泰迪·罗斯福”。 因此,标点符号如“-”或“.”在“不”中。句子中不应该有空格,但不依赖单词或短语的其他标点符号应该有空格。
I want to write a program in c++ that get a sentence and insert a space between each word and punctuation in it! in sed script this is done with this expression:
sed -e "s/,\([^0-9]\)/ , \1/g" -e "s/\.\([^0-9]\)/ . \1/g" -e 's/\.[ ]*$/ ./g' -e "s/\'/ \' /g" -e 's/?/ ?/g' -e 's/\`\`/ `` /g' -e "s/\' \'/''/g" -e 's/(/ ( /g' -e 's/)/ ) /g' -e 's/ \. \([^$]\)/. \1/g' -e "s/\' s/\'s/g" -e "s/\"\([^\"]*\)\"/\" \1 \"/g" $1 | sed -e "s/\"\([^\"]*\)\"/\`\`\1''/g"
But I don't khow how i should do this in c++ in windows!
for example: should convert a "The question now: Can he act more like hard-charging Teddy Roosevelt." must be converted to "The question now : Can he act more like hard-charging Teddy Roosevelt ."
So a punctuation such as '-' or for example a '.' in "No." should not spacing in a sentence, but other punctuation that don't rely on a word or a phrase should be spaced.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
既然您已经知道如何使用正则表达式来处理此问题,我认为您可以尝试使用 Boost.Regex 以便使用 C++ 存档相同的内容。
Since you already know how to handle this using regular expressions I think you can try to use Boost.Regex in order to archive the same with C++.