51 (изменено: Malcev, 2018-12-07 23:18:50)

Re: AHK: Регулярные выражения и особенности RegExMatch

Лично мне непонятно, чего вы добиваетесь.
Советую в тестировании использовать простой текст, типа "one two three four" - возможно вам тогда станет понятнее почему у вас не получается задуманное.

52 (изменено: vladmany, 2018-12-07 23:31:54)

Re: AHK: Регулярные выражения и особенности RegExMatch

Задача состоит в том, что мне нужно из исходного текста взять нужную информацию, отправить её по разным переменным и уже с ними работать. Структура исходного текста будет постоянно такой, только последний параметр может быть, а может и не быть. Нужен шаблон, который при наличии последнего параметра будет отправлять его в Subpatern, а если его не будет, то то шаблон так же будет работать, только уже без него. Между аргументами стоит пробел, так что нужно сделать, чтобы было два варианта, либо был просто текст типа "clear @p[score_Clear=1] minecraft:redstone_block 2 4" либо пробел и тот необязательный аргумент допустим. Надеюсь в этот раз понятно объяснил.

53

Re: AHK: Регулярные выражения и особенности RegExMatch

Непонятно.
Приведите 2 варианта в кавычках и с упрощенными словами.

54 (изменено: vladmany, 2018-12-07 23:51:18)

Re: AHK: Регулярные выражения и особенности RegExMatch

Malcev пишет:

Советую в тестировании использовать простой текст, типа "one two three four" - возможно вам тогда станет понятнее почему у вас не получается задуманное.

Ну если так вам станет понятно чего мне нужно добиться то пожалуйста.
Есть текст "one two three four" при этом слова four может и не быть, а шаблон всё равно сработает(выдаст правду при if). Говоря нету слова four я подразумеваю что пробела перед ним тоже нет. Кроме того, каждое найденное из слов должно уходить в отдельную переменную, в том числе и необязательное слово four если оно конечно присутствует. Ну и как вы уже поняли из моих примеров, шаблоны для каждого слова состоят из (.*). Иными словами, RegExMatch проверяет, есть ли в исходном тексте 4 любых слова разделённых пробелами, и присутствие последнего слова(включая пробел перед ним) необязательное.

55

Re: AHK: Регулярные выражения и особенности RegExMatch

vladmany пишет:

Говоря нету слова four я подразумеваю что пробела перед ним тоже нет.

Подразумеваете что пробела нет, но в необязательный подшаблон его не вставили.

56

Re: AHK: Регулярные выражения и особенности RegExMatch

Malcev Пытался, но всё равно два слова уходят в один Subpatern

57

Re: AHK: Регулярные выражения и особенности RegExMatch

Как пытались?

58

Re: AHK: Регулярные выражения и особенности RegExMatch

Malcev Ну допустим вот так. Просто поставить пробел перед .* в скобках. Но блин, это и так было понятно что неправильно. Покажите мне, как сделать и пробел не обязательным, но чтобы Subpatern'ы не сливались с предыдущим словом.

Post's attachments

Screenshot_8.png
Screenshot_8.png 43.46 kb, file has never been downloaded. 

You don't have the permssions to download the attachments of this post.

59 (изменено: vladmany, 2018-12-08 00:09:23)

Re: AHK: Регулярные выражения и особенности RegExMatch

Кстати, сливаются они после того как я ставлю тот необязательный пробел. Когда необязательного текста нет, сабпатерны не сливаются.

60

Re: AHK: Регулярные выражения и особенности RegExMatch

Это происходит потому, что ".*" - может быть всем, чем угодно.

61 (изменено: vladmany, 2018-12-08 00:11:18)

Re: AHK: Регулярные выражения и особенности RegExMatch

MalcevТоесть по любому нужно намекнуть что именно будет в этом что угодно, чтобы сузить круг поиска так сказать?

62

Re: AHK: Регулярные выражения и особенности RegExMatch

Нельзя просто задать шаблон три любых слова, и четвертое не обязательное включая пробел перед ним?

63 (изменено: vladmany, 2018-12-08 00:17:20)

Re: AHK: Регулярные выражения и особенности RegExMatch

Я уже давно бы мог решить эту задачу добавив ещё один if, но думал регулярками это все же можно сделать, и в плане оптимизации будет лучше.

64

Re: AHK: Регулярные выражения и особенности RegExMatch

Судя по всему вместо ".*" вам надо указать, что в подшаблоне не должно быть пробела.

65

Re: AHK: Регулярные выражения и особенности RegExMatch

Malcev, будьте добры, укажите, я в подшаблонах так и не разобрался. Думаю после этого примера что-то в голове отложится..

66

Re: AHK: Регулярные выражения и особенности RegExMatch

[^...]
Означает один любой символ из тех, которых нет в перечне. Например, [^/]* есть пустая или любой длины последовательность любых символов, среди которых нет символа "/", например: http://. Сходным образом, [^0-9xyz] есть любой символ, не являющийся цифрой или буквой x, y, или z.

http://www.script-coding.com/AutoHotkey/RegEx.html

67 (изменено: vladmany, 2018-12-08 00:24:45)

Re: AHK: Регулярные выражения и особенности RegExMatch

Malcev, та же история.. Слова one и two сливаются и идут в один сабпатерн

Post's attachments

Screenshot_9.png
Screenshot_9.png 48.6 kb, file has never been downloaded. 

You don't have the permssions to download the attachments of this post.

68

Re: AHK: Регулярные выражения и особенности RegExMatch

Ну тогда на данном этапе используйте if.
Может потом додумаете.

69

Re: AHK: Регулярные выражения и особенности RegExMatch

Malcev, похоже выхода нет. Ладно, спасибо за уделенное мне время.

70

Re: AHK: Регулярные выражения и особенности RegExMatch

Как удалить пробел в конце любого текста если он там присутствует?

71

Re: AHK: Регулярные выражения и особенности RegExMatch

https://autohotkey.com/docs/commands/Trim.htm

72 (изменено: vladmany, 2019-01-04 15:57:50)

Re: AHK: Регулярные выражения и особенности RegExMatch

А как можно RegExReplace'ом заменить все заглавные буквы на строчные?

73

Re: AHK: Регулярные выражения и особенности RegExMatch

Format() = ?


str := "ВсЕ зАгЛаВнЫе На СтРоЧнЫе"
MsgBox % Format("{:l}",str)

74 (изменено: vladmany, 2019-01-04 17:41:15)

Re: AHK: Регулярные выражения и особенности RegExMatch

KusochekDobra, хотя это тоже подойдет. Спасибо.

75

Re: AHK: Регулярные выражения и особенности RegExMatch

Тоже самое есть и в RegExReplace, но в нём можно что то сразу выделить.


str := "тУТ зАгЛаВнЫе, тУТ СтРоЧнЫе, тУТ титуЛЬНЫЕ"
MsgBox % RegExReplace(str, "(.*?),(.*?),(.*)", "$U1,$L2,$T3") 

str := "ВсЕ зАгЛаВнЫе На СтРоЧнЫе"
MsgBox % RegExReplace(str, "(.*)", "$L1")  

str := "ВсЕ СтРоЧнЫе На зАгЛаВнЫе"
MsgBox % RegExReplace(str, "(.*)", "$U1")  

str := "всЕ слоВА с больШОЙ бУКВы, ОСТАЛЬНЫЕ БУКВЫ строчные"
MsgBox % RegExReplace(str, "(.*)", "$T1")
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui