Need to ADD special character '♪' to the END of SINGLE and DOUBLE line strings
Below is the BEFORE and AFTER of the results I'm trying to achieve.
Assume this will be done with two separate find/replace inputs.
At the bottom you will find my feeble regex attempts using NotePad .
==============================
BEFORE
==============================
400
00:31:44,633 --> 00:31:45,716
Come on.
401
00:31:59,940 --> 00:32:02,399
Caleb used to do that
when he ate.
402
00:32:03,902 --> 00:32:05,069
Pull my hair like that.
410
00:32:46,653 --> 00:32:48,654
♪ Saying</i>
411
00:32:48,738 --> 00:32:52,241
♪ This is my message to you</i>
412
00:32:56,163 --> 00:32:57,538
♪ Don't worry</i>
636
00:55:59,545 --> 00:56:02,296
♪ You don't own me
637
00:56:02,798 --> 00:56:06,676
♪ I'm not just
one of your many toys
638
00:56:06,969 --> 00:56:09,929
♪ You don't own me
639
00:56:10,347 --> 00:56:16,394
♪ Don't say
I can't go with other boys
640
00:56:16,728 --> 00:56:20,106
♪ And don't tell me
what to do
641
00:56:20,816 --> 00:56:24,026
♪ Don't tell me what to say ♪
642
00:56:24,278 --> 00:56:27,822
♪ And please,
when I go out with you ♪
643
00:56:28,365 --> 00:56:31,742
♪ Don't put me on display ♪
644
00:56:31,952 --> 00:56:36,080
♪ 'Cause you don't own me ♪
==============================
AFTER
==============================
400
00:31:44,633 --> 00:31:45,716
Come on.
401
00:31:59,940 --> 00:32:02,399
Caleb used to do that
when he ate.
402
00:32:03,902 --> 00:32:05,069
Pull my hair like that.
410
00:32:46,653 --> 00:32:48,654
♪ Saying</i> ♪
411
00:32:48,738 --> 00:32:52,241
♪ This is my message to you</i> ♪
412
00:32:56,163 --> 00:32:57,538
♪ Don't worry</i> ♪
636
00:55:59,545 --> 00:56:02,296
♪ You don't own me ♪
637
00:56:02,798 --> 00:56:06,676
♪ I'm not just
one of your many toys ♪
638
00:56:06,969 --> 00:56:09,929
♪ You don't own me ♪
639
00:56:10,347 --> 00:56:16,394
♪ Don't say
I can't go with other boys ♪
640
00:56:16,728 --> 00:56:20,106
♪ And don't tell me
what to do ♪
641
00:56:20,816 --> 00:56:24,026
♪ Don't tell me what to say ♪
642
00:56:24,278 --> 00:56:27,822
♪ And please,
when I go out with you ♪
643
00:56:28,365 --> 00:56:31,742
♪ Don't put me on display ♪
644
00:56:31,952 --> 00:56:36,080
♪ 'Cause you don't own me ♪
Add Music Note to END of SINGLE LINE STRING:
Find: (?=♪\B)(.*)
Replace: $1 ♪
Add Music Note to END of DOUBLE LINE STRING:
Find: (?=♪)(.*)\r\n([A-Za-z] ?)
Replace: $1\r\n$2 ♪
Thanks in Advance
CodePudding user response:
Another option might be using:
^(♪\h [A-Za-z].*?(?:\R[A-Za-z].*?)?)♪?$
Explanation
^
Start of string(
Capture group 1♪\h [A-Za-z]
Match ♪, 1 spaces, a char A-Za-z.*?
Match any char as least as possible(?:\R[A-Za-z].*?)?
Optionally match the next line if it starts with A-Za-z
)
Close group 1♪?
Match an optional ♪$
End of string
CodePudding user response:
/^(♪.*?)(?=(?:\R^$)|\z)/$1 ♪/gms
^ ^ ^ the regex
^ ^ replacement
^ flags
With the edit (where it seems some of the entries already have the ending note) you can modify the regex to be:
/^(♪[^♪]*?)(?=(?:\R\R)|\z)/$1 ♪/gm
CodePudding user response:
It can be done in a single search/replace.
Use this regex for search:
^(?:♪ )?([A-Z].*?)(?: ♪)?$(?:(\n. ?)(?: ♪)?$)?
Replace it with:
♪ $1$2 ♪
RegEx Breakup:
^
: Start(?:♪ )?
: Match♪
as an optional match([A-Z].*?)
: Match an uppercase character followed by any text till end of line in capture group #1(?: ♪)?$
: Match♪
as an optional match before line end(?:
: Start non-capture group(\n. ?)
: Match line break followed by 1 of any char till end of line in capture group #2(?: ♪)?$
: Match♪
as an optional match before line end
)?
: End non-capture group.?
makes this optional♪ $1$2 ♪
is replacement that wraps our matches with♪