我正在寻找一个正则表达式来匹配给定字符串中格式[0-9]\/[1-9]{1,2}
的分数
以下是一个例子:
my_str = "This is a 1/2 1/4. Press 1/2/3. He drove a car for 1/2hour." # A free text
def replace_fractions(text):
fraction_dict = {
'1/2': 'half',
'1/4': 'quarter',
'3/4': 'three quarters',
'2/3': 'two thirds',
}
_tmp = ' '.join([fraction_dict.get(w, w).strip() for w in text.split()])
return _tmp
current_result = replace_fractions("This is a 1/2 1/4. Press 1/2/3. He drove a car for 1/2hour.")
当前结果:
"This is a half 1/4. Press 1/2/3. He drove a car for 1/2hour."
预期结果:
"This is a half quarter. Press 1/2/3. He drove a car for half hour."
显然,需要使用正则表达式来处理1/2/3
或1/4.
或1/2hour
等情况
但是,这个[0-9]\/[1-9]{1,2}
匹配所有内容。处理这些案件的合适正则表达式是什么
注意:正则表达式只需处理上述情况。所有极端情况均可忽略(或在专家评论后重新编辑)
您可以在方法中使用以下
return
:见Python demo。注意
half
和hour
之间的空格丢失了,因为它在输入中丢失了。您需要添加更多的逻辑,以便仅在预期情况下添加空间详细信息
(?<!\d)(?<!\d/)
-不允许直接在左侧使用数字或数字和/
[0-9]/[0-9]{1,2}
-一个数字,/
和1或2个数字(?!/?\d)
-右边不应该有/
+个数字或者只有一个数字李>Full code snippet:
相关问题 更多 >
编程相关推荐