Рекомендуемый шаблон:
Если бы это был я с нуля, я бы использовал следующее:
grep('\\d[^a-z]*[CF]', temp, value = TRUE)
# > [1] "La temp es de 0.4 F" "La temp es de -5F" "La temp es de - 0.6 C"
\\d
есть git
[^a-zA-Z]*
, за которым не следует ни одного символа в диапазоне от az, но любые другие символы
[CF]
, а в конце следует C или F
Объяснение:
У вас есть куча проблем с этим регулярным выражением (если я не ошибаюсь):
Вы используете группы в замена не в соответствии шаблону. Я не уверен, почему у вас есть \\1\\2
в конце вашего паттерна.
У вас ненужная группировка. Различные части желаемого шаблона являются последовательными, и вы хотите просто найти их, а не заменить их.
Вы предполагаете, что C или F всегда происходят в конце строки.
У вас есть дополнительные скобки.
Я не эксперт, поэтому возможны другие проблемы.
NB Здесь было бы полезно использовать онлайн-переводчиков, поскольку они показывают / выделяют некоторые ошибки.
Я начал с вашего шаблона и пришел к следующему:
[+-]?\\s*[0-9+][\\.]?[0-9+]?\\s*[CF]
Вот демоверсия regex , которая также предоставляет подробное объяснение описанной выше схемы. Вы можете вставить первый шаблон здесь, чтобы получить лучшее объяснение, чем то, что я предоставил.