- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我试图根据Python中的正常语法规则正确地分割句子。
我要拆分的句子是
s = """Mr. Smith bought cheapsite.com for 1.5 million dollars,
i.e. he paid a lot for it. Did he mind? Adam Jones Jr. thinks he didn't. In any case, this isn't true... Well, with a
probability of .9 it isn't."""
预期输出是
Mr. Smith bought cheapsite.com for 1.5 million dollars, i.e. he paid a lot for it.
Did he mind?
Adam Jones Jr. thinks he didn't.
In any case, this isn't true...
Well, with a probability of .9 it isn't.
为了实现这一点,我使用的是常规的,经过大量搜索后,我发现了以下正则表达式,它可以实现这一点。new_str只是从's'中删除一些\n
m = re.split(r'(?<!\w\.\w.)(?<![A-Z][a-z]\.)(?<=\.|\?)\s',new_str)
for i in m:
print (i)
Mr. Smith bought cheapsite.com for 1.5 million dollars,i.e. he paid a lot for it.
Did he mind?
Adam Jones Jr. thinks he didn't.
In any case, this isn't true...
Well, with aprobability of .9 it isn't.
所以我理解reg ex的方式是我们首先选择
1) 所有字符如 i.e
2)从第一个选择的过滤空格中,我们选择这些字符没有像先生、夫人等词
3)从过滤的第二步中,我们仅选择那些带有点或问题且前面有空格的主题。
所以我尝试更改顺序如下
1)先过滤掉所有标题。
2) 从过滤的步骤中选择前面有空格的步骤
3) 删除所有短语,如 i.e
但是当我这样做时,后面的空白也会被分割
m = re.split(r'(?<![A-Z][a-z]\.)(?<=\.|\?)\s(?<!\w\.\w.)',new_str)
for i in m:
print (i)
Mr. Smith bought cheapsite.com for 1.5 million dollars,i.e.
he paid a lot for it.
Did he mind?
Adam Jones Jr. thinks he didn't.
In any case, this isn't true...
Well, with aprobability of .9 it isn't.
修改后的程序中的最后一步不应该能够识别诸如“i.e.”之类的短语,为什么它无法检测到它?
最佳答案
第一个,最后一个.
在(?<!\w\.\w.)
看起来很可疑,如果您需要将文字点与其匹配,请转义它( (?<!\w\.\w\.)
)。
回到问题,当你使用r'(?<![A-Z][a-z]\.)(?<=\.|\?)\s(?<!\w\.\w.)'
时正则表达式中,最后一个负向后查找检查空格后面的位置前面是否没有单词 char、点、单词 char、任何 char(因为 .
未转义)。这个条件为真,因为有一个点,e
,另一个.
以及该位置之前的一个空格。
使后向工作与之前一样\s
,输入 \s
也进入后向模式:
(?<![A-Z][a-z]\.)(?<=\.|\?)\s(?<!\w\.\w.\s)
请参阅regex demo
另一个增强功能可以在第二个lookbehind中使用字符类:(?<=\.|\?)
-> (?<=[.?])
.
关于python - 使用 Look Behind 或 Look Ahead 函数查找匹配项时的正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40443363/
我在主从之间设置了 mysql 复制。现在发现从属落后了。如果我只关心最新数据,有什么想法可以跳过 mysql 复制吗? 谢谢。 最佳答案 它应该很快 catch ,但您可以将从站设置为在任何时候启动
这似乎应该很容易做到,但是每次我处理这个问题时,我最终都会得到感觉“不太优雅”的解决方案 这是我的基本问题:如果我正在循环浏览以特定方式订购的字典,在循环中的任何给定点内,我如何“查看”或获得对当前位
我想使用 crate 对话器让用户检查并更正一些建议的数据。 Cargo.toml依赖项 [dependencies] dialoguer = "0.7" src/main.rs use dialog
我需要从一组给定坐标中找到最接近给定坐标点的坐标 (lat,lon)。类似于这个问题: Find the closest coordinate from a set of coordinates 但是
我想使用 Write-Ahead Logging SQLite 在 j2se 程序中的特性。请帮助我提供一个 Java 实现示例。 最佳答案 您需要执行 Sqlite 特定命令(就像您执行其他 SQL
我对原始的“patch-right-and-ahead”有疑问。在模型设置中禁用世界环绕时,我收到以下错误消息: OF expected input to be a turtle agentset o
Perl 负向预测不适用于大字符串(长度 > 40000,在 active perl 和 cygwin perl,版本 5.14 中)。我用 mingw perl 5.8.8 尝试了相同的代码,它停止
Perl 负向预测不适用于大字符串(长度 > 40000,在 active perl 和 cygwin perl,版本 5.14 中)。我用 mingw perl 5.8.8 尝试了相同的代码,它停止
我正在使用 Ruby on Rails 3.2.9 和 MySQL。我有一个带有 user_id 属性的 Article 模型(此属性表示外键 - id - 对于关联的作者用户),我想检索为给定作者“
我有一个 SystemJS 项目。我使用 NGC 和 Rollup 进行 AOT 编译。一切正常,但用于路由的延迟加载不起作用。比如我的tsconfig-aot.json { "compilerO
我们正在使用带有 Type Ahead 的 inputText XPages 控件来自动完成。在搜索字段中输入时,不会出现任何建议。我们在 Type Ahead 属性 Pane 中设置了一个逗号分隔的
我正在尝试解决Project Euler Problem 14以一种懒惰的方式。不幸的是,我可能正在尝试做不可能的事情:创建一个惰性序列,它既是惰性的,又以某种方式“向前看”尚未计算的值。 我为测试正
在解析器上工作,如果我检测到某个关键字,我想调用一个函数并向其发送下一个标记(我们可以假设所有输入都是正确的)。 我在下面尝试的方法不起作用,因为我们无法取消引用 int。 我正在尝试:
我有一个 computing map (使用 soft values )我用来缓存昂贵计算的结果。 现在我有一种情况,我知道在接下来的几秒钟内可能会查找特定的 key 。该 key 的计算成本也比大多
我提交了一些东西并意识到我的评论有拼写错误,所以我再次输入 git commit -m "xxx" 并更正了评论。 结果,我无法像 git push 所说的那样推送任何东西 Everything up
我们公司的工作流程是在我们开发新功能时将 master 分支克隆到 _Test 分支,我们不断推送/共享这个 _Test 分支,直到一组功能完成并得到客户的批准,然后我们合并到 master 分支并构
我尝试为我的项目执行集成,但有永久信息: 还没有开始整合。如果我取消集成并重新启动它,则会出现相同的信息。怎么做才能让它发挥作用? 最佳答案 执行此操作的最简单方法是从运行机器人的机器上的终端运行此命
我有一个 WPF 列表框控件,我希望允许用户使用预先输入来更改所选项目。我正在寻找的行为与 Windows 资源管理器完全一样。当您继续键入文件夹名称的文本时,列表将继续选择更正确的项目。 例如假设这
我有一个包含时间序列的 pandas df,从 t(0) 开始,我需要向前查看 t(n) 并查看前面的最大值和最小值是多少,其大小由下式定义“从”和“到”列。 这是我的 df: 这是我的解决方案,它有
// https://angular-ui.github.io/ // setup app and pass ui.bootstrap as dep var myApp = angular.modul
我是一名优秀的程序员,十分优秀!