Home > Back-end >  Adding special character to the END of SINGLE and DOUBLE line strings
Adding special character to the END of SINGLE and DOUBLE line strings

Time:09-23

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

enter image description here

CodePudding user response:

/^(♪.*?)(?=(?:\R^$)|\z)/$1 ♪/gms

    ^    ^     ^                   the regex
                        ^  ^       replacement
                              ^    flags

Demo

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

Demo 2

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 Demo

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
  • Related